一、问题背景:
最近在做一个基于SSH2的JAVA WEB项目,应用服务器使用的是weblogic9.2,数据库使用的是informix9.53C1。
查看inofrmix数据版本脚本:【SELECT owner FROM systables where tabname = ' VERSION'】
二、问题现象:
项目测试环境部署后,一直运行都很正常,最近根据需求,领导安排同事去重新部署一套新环境。环境部署完成后,问题出现了,WEB页面部分信息莫名其妙地竟然显示了乱码,以至于有些功能根本无法使用。
例如:原来要显示数字1的地方,有些显示成了“/",有些地方根本就没有显示。
三、解决方法:
经过各种问题排查,发现在weblogic配置数据源时,Database URL中缺少”IFX_USE_STRENC=true“配置,修改URL后,页面显示正常。
修改前:jdbc:informix-sqli://ip:port/testdb:informixserver=serverX;NEWLOCALE=zh_CN,zh_CN;NEWCODESET=gb2312,8859-1,819;
修改后:jdbc:informix-sqli://ip:port/testdb:informixserver=serverX;NEWLOCALE=zh_CN,zh_CN;NEWCODESET=gb2312,8859-1,819;IFX_USE_STRENC=true
四、小结
在JDBC3.50JC4X1版本后,JDBC提供了一个选项,可以让用户选择遇到非法字符集时采用跟以前兼容的处理方式,具体方法为是在JDBC的链接url中,加入“IFX_USE_STRENC=true”的选项,这样JDBC在遇到非法字符集时,就会将其转换为"?",并将其插入数据库中。
对于使用WAS连接数据库的用户,需要手工添加一个连接属性ifxIFX_USE_STRENC,并将其值设置为true,就可以了。
参考资料:http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1897869G20000