读书人

oracle的字符集为WE8ISO8859P1, 使用C

发布时间: 2012-01-07 21:41:55 作者: rapoo

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后面的数字记不清了,你试试这个看

读书人网 >C#

热点推荐