数据库中的字符字段为:“某市毕N公司”,取出后在JSP页面显示,结果却变成了“某市毕?公司”,请高手指教!
环境:WebLogic7.1, struts 1.0
web.xml和weblogic.xml已配置按GBK解码
数据库中的字符字段为:“某市毕N公司”,取出后在JSP页面显示,结果却变成了“某市毕?公司”,请高手指教!
环境:WebLogic7.1, struts 1.0
web.xml和weblogic.xml已配置按GBK解码
不好意思,写错了,是WebLogic7.0 sp2才对
先检查一下,在数据库中是否为正常的
我也遇到过这个情况,它通常出现在冷僻的汉字上,比如“础薄TLINUX的服务器上就会出现这个问题。而在WINDOWS上就没有。
你的服务器是不是LIXUX的
数据库中是正常的。
Win2000和HP-UX的ORACLE、WebLogic服务器都出现此现象。
这个“N”字确实比较特别,我用紫光拼音、W2K的微软拼音和智能拼音都打不出来,只有全拼才打的出来。
这个问题涉及两个方面:操作系统和JDBC Driver。
对于Oracle而言,有两种JDBC Driver:Thin和OCI。Thin Driver为三层结构纯Java Driver为两层的外包装Java类型的Driver。也就是说,如果用OCI Driver会需要涉及到数据库和WebLogic Server所在机器的操作系统的字符集问题。
另外,“N”属于生僻字在GB2312标准集中不包含,GBK是国标码包含了该字。GB2312只是GBK的子集。所以,一定要用GBK集。
我的测试环境如下:
1. WebLogic Server SP2。机器操作系统:Windows 2000 Professional英文版。
2. Oracle 8i数据库。机器操作系统:Windows 2000 Professional英文版。
3. 数据库字符集:AMERICAN_AMERICA.ZHS16CGB231280。
4. JDBC Driver:WebLogic提供的OCI Driver。
代码中在写入数据库的时候,无需转码直接写入数据库表。用SQL Plus等Oracle SQL Client查询,正常显示。通过JSP来读取数据库表显示,需要转码(因为我的机器是英文版Windows,所以,需要从ISO8859_1转化为GBK),然后显示一切正常。
但是,我尝试用Thin Driver,但是无法显示。
总结一下,字符集涉及三个方面:操作系统字符集、数据库字符集、JDBC Driver。
我的环境是:操作系统(英文)、数据库(AMERICAN_AMERICA.ZHS16CGB231280)、JDBC Driver(WebLogic Oracle OCI Driver)
我正在尝试将数据库字符集设置为GBK的再试试。
总之,需要在这三个方面进行测试。对于我的环境,我找到了自己的解决办法,相信各位高手一定会找到适合自己环境的解决方案。
对不起,各位!
刚才手误写错了,写入数据库的时候一样需要转码。同样,因为我的操作系统是英文的所以要从GBK转为ISO8859_1才可以。
各位,
我测试过了,如果在建Oracle数据库时,选择GBK字符集。操作数据库时,无需任何转码的操作一切自然正常。
JDBC Driver用的是Thin Driver
谢谢lyang_qsi,我会自己再做一些测试。我知道你是谁:-)
总算知道是什么原因了,其实很简单,在JSP里面把<%@ page contentType="text/html;charset=gb2312"%>中的GB2312改为GBK就可以了。