Oracle开发之中文乱码的问题(二)

本文探讨了Oracle数据库在处理中文字符时出现的乱码问题,重点介绍了两种不同的编码方式——美国编码SIMPLIFIED CHINESE_CHINA.US7ASCII和中国编码SIMPLIFIED CHINESE_CHINA.ZHS16GBK,并提及了使用OLEDB连接时,特别是通过provider=OraOLEDB.Oracle驱动可能遇到的相关问题。参考链接提供了解决此类问题的详细步骤。
c#访问Oracle,本来是很常见的,但是在实际的工作中确实遇到了各种各样的异常,特此分析并总结如下,以便以后查找方便:
数据库的字符集常用的两种方式:

美国编码SIMPLIFIED CHINESE_CHINA.US7ASCII

中国编码SIMPLIFIED CHINESE_CHINA.ZHS16GBK

连接方式:

1.OLEDB连接

{Provider=MSDAORA.1;User ID=martin;password=1;Data Source=orcl;Unicode=True;Integrated Security=yes;Persist Security Info=False}
{Provider=ORAOLEDB.ORACLE;User ID=martin;password=1;Data Source=orcl;Unicode=True;Persist Security Info=False}

OLEDB连接Oracle分为两种方式,即分别微软和Oracle写的不同的驱动。
provider=MSDAORA.1是微软写的驱动

provider=OraOLEDB.Oracle是Oracle自带的驱动

小结:
使用MSDAORA.1驱动的OLEDB连接,不管数据库字符集是美国编码US7ASCII还是中国编码ZHS16GBK,都不会出现乱码,若出现乱码,可能是本地Oracle与服务端Oracle字符集不相同导致的。需要修改注册表nls_lang变量。但是,在X64位Oracle上使用MSDAORA.1时,会出现未在本地计算机上注册“MSDAORA.1”提供程序的问题。也就是说MSDAORA.1在64位的Oracle支持不好。
使用ORAOLEDB.ORACLE驱动的OLEDB连接,对中国编码ZHS16GBK支持很好。若Oracle字符集是美国编码US7ASCII,数据读取无乱码,写入有乱码,并且做为where条件传进去的中文参数为乱码。
ORAOLEDB.ORACLE对Oracle的32位或者64位不受影响。
2.其他的连接方式



参考博客:

http://blog.youkuaiyun.com/jack_33/article/details/7620100;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值