站点图标 久久日记本

Oracle中汉字乱码解决

用SQL Navigator查询数据库,发现汉字全部显示乱码;用ADO.NET,显示在网页上依然乱码。

开始以为是网站问题,于是在web.config配置文件准哦功能添加:

<globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="zh-CN" fileEncoding="utf-8"/>

依然乱码。

肯定不是服务器端数据库问题,因为服务器上架设的网站用同一个数据库正常。那可能就是我的本机上Oracle数据库问题了。

用SQL语句:

select userenv('LANGUAGE') from dual

发现查询结果的语言为 AMERICAN_AMERICA.ZHS16GBK

于是

CMD regedit打开注册表,HKEY_LOCAL_MACHINE->SOFTWARE->Oracle,将NLS_LANG设置为AMERICAN_AMERICA.ZHS16GBK,结果网页上查询出来的结果正常,但是用SQL Navigator查询出来的结果却依然是乱码。再改HKEY_LOCAL_MACHINE->SOFTWARE->Oracle->HOME0中的NLS_LANG也改了,发现还是不行。

通过同事帮忙,才知道:后一个应该改为:SIMPLIFIED CHINESE_CHINA.ZHS16GBK

真是奇葩啊。

总结一下,需要改以下:

HKEY_LOCAL_MACHINE->SOFTWARE->Oracle,将NLS_LANG设置为AMERICAN_AMERICA.ZHS16GBK;

HKEY_LOCAL_MACHINE->SOFTWARE->Oracle->HOME0中的NLS_LANG设置为SIMPLIFIED CHINESE_CHINA.ZHS16GBK

同事说只需要改后面一个就行了,诶,算了,不试验了,显示正常就行。

退出移动版