用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
同事说只需要改后面一个就行了,诶,算了,不试验了,显示正常就行。