【转】关于Oracle 9i或9i以上版本客户端连接Oracle 8i及8i版本以下服务器端中文字符乱码的解决办法

【转】关于Oracle 9i或9i以上版本客户端连接Oracle 8i及8i版本以下服务器端中文字符乱码的解决办法

在做项目过程中,遇到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_MACHINESOFTWAREORCALE,可以看到名称为NLS_LANG项,将其数据(键值)改为:SIMPLIFIED CHINESE_CHINA.ZHS16GBK

3.     

 

 ORACLE目录下,其他子目录,如有个HOMEO项,点击HOMEO,也可以看到NLS_LANG项,删除它。如有HOMEO1等等项,下面如有NLS_LANG项,均删除。

4.       关闭注册表。

5.       运行程序测试结果是否解决乱码问题。

6.       注意:可以先不执行第1项。但要确保客户端和服务器端字符集一样。

解决办法二:使用System.Data.Oledb方式连接,则可以直接避免中文乱码。

原文:http://www.cnblogs.com/mcnble/archive/2009/07/01/1514907.html

原文地址:https://www.cnblogs.com/lauer0246/p/1634783.html