在做项目过程中,遇到Oracle 9i或9i版本以上客户端连接Oracle 8i及8i版本以下服务器端时,查询出来的中文数据全部变成了乱码。经查询资料终于解决了乱码问题。
开发工具是ASP.NET(C#)+ Oracle,使用System.Data.OracleClient方式连接Oracle数据库。
解决办法一(第一项可以不执行,但要确保服务器端和客户端字符集一样):
1. 进入SQL PLUS 输入命令:select userenv('language') from dual; 查询字符集结果为
SIMPLIFIED CHINESE_CHINA.ZHS16GBK。
2.
开始-运行-键入regedit进入注册表,为以防万一,先备份注册表,然后找到HKEY_LOCAL_MACHINE-SOFTWARE-ORCALE,可以看到名称为NLS_LANG项,将其数据(键值)改为:SIMPLIFIED CHINESE_CHINA.ZHS16GBK
3.
在ORACLE目录下,其他子目录,如有个HOMEO项,点击HOMEO,也可以看到NLS_LANG项,删除它。如有HOMEO1等等项,下面如有NLS_LANG项,均删除。
4. 关闭注册表。
5. 运行程序测试结果是否解决乱码问题。
6. 注意:可以先不执行第1项。但要确保客户端和服务器端字符集一样。
解决办法二:使用System.Data.Oledb方式连接,则可以直接避免中文乱码。