linux enterprise5(简体中文) +oracle10g+tomcat5.5+JDK1.5 乱码问题解决方法

来源:互联网 发布:表层套管数据 编辑:程序博客网 时间:2024/05/29 14:37

我的企业应用在windows2003SRV(简体中文)+oracle10g+tomcat5.5+JDK1.5下运行正常

1.应用错误现象:

   读出oracle10g  中的clob字段内容后.输出字节流>>Reader >>样式解析>>字符串转换为UTF-8>>结果为乱码(不是?之类的,也是方块字哦)

 

2.原因分析:

 在其它配置都相同的情况下(oracle10g+tomcat5.5+JDK1.5),只有window与linux的区别,分析可能是JRE的运行环境使用了操作系统的配置参数.

oracle10g

           select * from nls_database_parameters where parameter='NLS_CHARACTERSET'

          ZHS16GBK

 tomcat5.5  

          --linux版与windows版都是在apache官网上下载的.

JDK1.5       

        --linux版与windows版都是在sun官网上下载的.

 

windows (简体中文)

linux enterprise 5 (选择简体中文安装)

 

但经过查看linux的配置文件:

    vi /etc/sysconfig/i18n  

    内容为:

    LANG=zh_CN.UTF-8

 出现的乱码是因为JVM与在读取IO流后输出为字符时使用了底层操作系统的字符集(linux的UTF-8)定义,进行了一次转换.

 

3.解决方法:

     保证oracle数据库的字符集
     select * from nls_database_parameters where parameter='NLS_CHARACTERSET'
     值为:ZHS16GBK

4.修改tomcat的启动脚本

    在startup.sh脚本的最上端加入一行 export LANG=zh_CN.GBK
   例子如下:


 #!/bin/sh
 # -----------------------------------------------------------------------------
 # Start Script for the CATALINA Server
 #
 # $Id: startup.sh 385888 2006-03-14 21:04:40Z keith $
 # -----------------------------------------------------------------------------

 # Better OS/400 detection: see Bugzilla 31132
 
 export LANG=zh_CN.GBK

 (说时:这里的export你可以放在/etc/profile文件中作为系统的公共配置项也行)

 

5.重新启动tomcat即可

原创粉丝点击