1.设置Tomcat字符集为UTF-8
找到conf\server.xml
修改
<Connector
port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true"/>
为
<Connector
port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding='UTF-8'/>
2.weblogic 乱码问题
第一部可以不执行
(1)环境变量中设置
变量JAVA_OPTIONS
变量值为-Dfile.encoding=GBK
(2)java代码中需要用ISO8859_1进行转码,原因是weblogic的编码为ISO8859_1
queryCondition = new String(queryCondition.getBytes("ISO8859_1"),"GBK")
3.tomcat向weblogic迁移的乱码问题
由于操作系统、浏览器、数据库、JVM采用的字符集都不一样,基于Weblogic应用经常出现中文显示乱码问题,
在Weblogic Server上运行的WEB应用有很多与字符集有关的设置.
以下一些配置大家可以试试:
一、一般方法
1. 在JSP文件头加入
指定该JSP采用的字符集。
2.在Weblogic.xml文件的中加入:
(1)
encoding
GBK
(2)
指定JSP文件中采用的字符集,在JSP文件中的会覆盖该设置
3.在Weblogic.xml文件的中加入
compilerSupportsEncoding
true
如果为TRUE,指定在编译JSP文件时,采用在JSP文件中定义的
或中定义的encoding参数中定义的字符集进行编码,如果为FALSE,则采用JVM中默认指定的字符集进行编码。
4. Weblogic Server需要把HTTP request(GET 和POST)中的数据从它的原始编码转化为Unicode,以便Java servlet API进行处理,
为了做这种转换,Weblogic Server需要知道HPPT request中的数据的编码方式。这可以通过在Weblogic.xml的中设置.
/
GBK
以上是对于一般情况的处理
二、比较特殊的方法(此方法没验证过):
与自己当前实际应用有关:
1.从ORACLE数据库中检索出来的中文显示不正确时,在这种情况下,如果数据库使用的是中文字符集,并使用的是Type 2 JDBC Driver时,可加入Weblogic.codeset=GBK的属性来解决这个问题。代码如下:
java.util.Properties props = new java.util.Properties();
props.put("Weblogic.codeset", "GBK");
props.put("user", "scott");
props.put("password", "tiger");
String connectUrl = "jdbc:Weblogic:oracle";
Driver myDriver = (Driver)
Class.forName("Weblogic.jdbc.oci.Driver").newInstance();
Connection conn =
MyDriver.connect(connectUrl, props);
2. 如果是采用WTC调用Tuxedo中的服务,在JSP页面中无法正确显示中文,必须使安装Tuxedo的服务器上的NLS_LANG环境变量与数据库中的字符集的设置一样。如后台Oracle数据库中的字符集设置为SIMPLIFIED CHINESE_CHINA.ZHS16GBK,那么Tuxedo应用服务器上的NLS_LANG环境变量应设置为:export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"