乱码问题备忘

请查一下系统设置的 locale 是什么,请把LANG设置为 zh_CN.gbk,
同时你还可以在启动文件中加入-Dfile.encoding=GBK, 例如在setDomainEnv.sh中修改JAVA_OPTIONS为:
JAVA_OPTIONS="${JAVA_OPTIONS} -Dfile.encoding=GBK"
export JAVA_OPTIONS
如果您使用的是GB18030字库,请试一下以下参数:
-Dfile.encoding=GB18030
另外,如果您是从数据库读出的数据,请保证从数据库读出的就是正确字符。

这是常见的处理“中文乱码”的解决方式。
 
IBM----GB18030 已经包含了GBK 请看看以下文档
http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1811997D29000
http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=2811995H31000
 

WEBLOGIC相关的中文问题
----------------------------------------------
 
1. JSP文件中的中文提示信息不能正确显示。
   最直接的原因是WebLogic的默认字符集不是中文字符集(Weblogic8.1里是setlocal,Weblogic7.0sp3,sp4为UTF-8),
   因此可以在JSP页面中设置字符集,加入如下脚本:
   <%@ page contentType=“text/html; charset=GBK“ %>
 
   这种做法需要对每个JSP页面进行设置。

----------------------------------------------
2. JSP文件中包含中文提示信息时,不能正确编译
   解决方法是在weblogic.xml文件的<jsp-descriptor>部分加入
   <jsp-descriptor>
        <jsp-param>
         <param-name>compilerSupportsEncoding</param-name>
         <param-value>true</param-value>
            </jsp-param>
            <jsp-param>
              <param-name>encoding</param-name>
              <param-value>GBK</param-value>
            </jsp-param>
   </jsp-descriptor>

----------------------------------------------
 
3. 在JSP文件之间传递中文时,如果不能正确传递中文数据
   方法(1)  可在web.xml文件中加入
   <context-param>
      <param-name>weblogic.httpd.inputCharset./*</param-name>
      <param-value>GBK</param-value>
   </context-param>
 
   方法(2)  在weblogic.xml里加上如下脚本:
   <charset-params>
  <input-charset>
   <resource-path>/*</resource-path>
   <java-charset-name>GBK</java-charset-name>
  </input-charset>
   </charset-params>
   方法(3)  当然这种问题也可以自己用java.net.URLEncoder和java.net.URLDecoder来处理中文.
 
 
----------------------------------------------
 
4. 从数据库中检索出来的中文显示不正确。首先查询数据库:
  
   select * from v$nls_parameters where parameter='NLS_CHARACTERSET';
  
   得到数据库的字符集, 如果ZHS16GBK, 则JDBC的操作不需要转码;
   如果是us7ascii, 则需要转码或者作相关配置.
  
   下面以使用不同的数据库驱动程序为例来介绍.
   a. 如果数据库使用的是中文字符集,而且使用的是WebLogic提供的TYPE2 driver (OCI driver),
      在配置连接池时设置Properties属性:
   weblogic.codeset=GBK
   b. 如果使用Thin Driver, 那么需要在查询数据库的时候将字符集由ISO转换为GBK,
      写入数据库的时候将字符集由GBK转换为ISO.
 
  举个例子:
  插入一条记录:
  Connection conn=null;
  PreparedStatement pstmt = null;
  try {
   String strSql="insert into tabA(A,B) values('1111','王超')";
   conn=ds.getConnection();
   strSql = new String(strSql.getBytes("GBK"), "ISO-8859-1");
   pstmt = conn.prepareStatement(strSql);
   pstmt.executeUpdate();
  }
  catch (Exception e) {
   //logger.error(e, e);
  }
  finally {
   disconn(conn, pstmt);
  }
  查询一条记录:
  Connection conn=null;
  PreparedStatement pstmt = null;
  ResultSet rs=null;
  try {
   String strSql="select B from tabA where A='1111'";
   conn=ds.getConnection();
   strSql = new String(strSql.getBytes("GBK"), "ISO-8859-1");
   pstmt = conn.prepareStatement(strSql);
   rs=pstmt.executeQuery();
   String strB;
   if (rs.next()){
    strB=new String(rs.getString(1).getBytes("ISO-8859-1"), "GBK");
  }
  catch (Exception e) {
   //logger.error(e, e);
  }
  finally {
   disconn(conn, pstmt, rs);
  }
  建议在属性文件里设置oracle字符集, 根据字符集判断是否转码, 以增加应用的移植性.
  
----------------------------------------------
 
5. 静态页面中文信息不能正确显示。
   浏览器端看到中文不能正确显示,首先应该检查浏览器是否支持中文,浏览器的编码是否设置正确。
   为保证静态页面中文信息正确显示可以在HTML <HEAD> 部分增加:
   <meta http-equiv="Content-Type" content="text/html" charset="GBK">

----------------------------------------------
 
6. 文件名和目录中的中文问题
   如果你的文件名或者目录是中文的,这时需要使用java.net.URLEncoder编码.
   举例, 在test.jsp里, 你需要提供一个超链接到 ./测试/测试.jsp, 你可以这么写:
   <p><a href="<%=java.net.URLEncoder.encode("./测试/测试.jsp")%>">go</p>

你可能感兴趣的:(java,服务器,乱码,AIX,休闲)