日期:2014-05-20  浏览次数:21314 次

oracle的字符集为WE8ISO8859P1, 使用C#插入中文时的奇怪问题
ORACLE数据库的字符集为WE8ISO8859P1,  

注册表项中ORACLE下跟字符集有关的三个注册表项(NLS_LANG)均设为了

AMERICAN_AMERICA.WE8ISO8859P1

使用PL/SQL   Developer用INSERT语句插入中文时没有问题,   但使用C#的System.Data.OracleClient调用INSERT语句时,   插入的中文均成为 "靠靠靠靠…… "(两个字一个靠!)



------解决方案--------------------
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0
这里有个 NLS_LANG 设置成 SIMPLIFIED CHINESE_CHINA.ZHS16GBK

其它的好象是设置成 American_America.UTF8
------解决方案--------------------
使用 Encoding.GetEncoding(936) 获得GBK的Encoder, 将中文字符串转为GBK byte[], 再将这个byte[]转为对应的char[], 再将char[]转为string, 将这个string作为insert语句的参数, 即可正确插入中文
------解决方案--------------------
使用 Encoding.GetEncoding( "gb... ")
gb后面的数字记不清了,你试试这个看