这两天搞OCI开发,程序部署在linux上,插入中文从sqlplus客户端查询出来一直是乱码,但是通过sqlplus插入中文再查询,中文显示是正常的。
网上搜罗了很久,在linux上设置了很多lang,比如export LANG=zh_CN.GBK ,export LANG=zh_CN.UTF8等等,无奈一直不行啊。
网上说,要oracle服务器和客户端的字符集显示要一致。关于客户端这个词,看来还是我理解错了,我就把它理解为类似于sqlplus这样的客户端,而
不是我的程序,悲催啊,搞了4天。
既然sqlplus能够插入中文并且正常显示,那我就查查他的字符集是什么:select userenv("language") from dual ,结果为 SIMPLIFIED CHINESE_CHINA.ZHS16GBK
于是在linux机器上(程序所在机器),export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK" ,记得要带引号啊,不然会失败的
这样修改之后,再次启动程序,插入数据后,查询数据,终于OK啦。
注:程序的中文字符串字段编码为GBK,linux lang 设置为 export LANG=zh_CN.GBK
关于NLS_LANG,网上很多资料,也可以参考这里http://www.cnblogs.com/debuging/archive/2012/09/10/2679213.html
解决Oracle中文乱码问题

本文介绍了在Linux环境下使用Oracle数据库时遇到的中文乱码问题及其解决方案。通过设置正确的NLS_LANG环境变量来确保程序与Oracle服务器之间的字符集匹配,最终解决了通过OCI开发的程序在部署到Linux服务器上时出现的中文乱码问题。
2048

被折叠的 条评论
为什么被折叠?



