none
ADO.net连接Oralce数据库乱码问题 RRS feed

  • 问题

  • 最近用ASP.net开发一个web系统,采用OracleClient连接一个英文字符集的Oralce数据库,然而中文信息从数据库读取出来后总是乱码,而通过sql plus查询时中文信息却是正常的,请教专家如何解决??

    Oralce数据库字符集为:AMERICAN_AMERICA.US7ASCII
    本地客户端环境是:AMERICAN_AMERICA.US7ASCII
    2009年7月27日 8:04

答案

  • 你好将你的连接字符串修改为
    Provider=msdaora;Data Source=MyOracleDB;User Id=myUsername;Password=myPassword;

    注意这里 Provider=MSDAORA

    参考 http://www.connectionstrings.com/oracle#22


    这个问题的解决方法你可以参考:http://www.51testing.com/?uid-170805-action-viewspace-itemid-84152
    1、客户端没有使用正确的字符集——修改注册表ORACLE字符集,2、ADO的数据库连接没有使用正确的容器——MS的ADO就使用MS提供的MSDAORA数据库连接。

    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://hi.baidu.com/1987raymond
    2009年7月27日 9:38
    版主
  • 搂主您好,
    个人的感觉,OracleClient的性能比Oledb的好,毕竟Oledb处理的场景更多。
    但是说到原理,目前还无法解答,也期望论坛里有这方面经验的人给与解答。

    如果深入研究的话,提供个人意见供参考:
    1、从类层级上看OracleClient、Oledb与SqlClient都继承DbDataAdapter, IDbDataAdapter,
    IDataAdapter, ICloneable。也就代表他们对外的接口一致,只是内部的实现不同。
    2、有了类层次结构,理清一个脉络,可以通过反射工具来查看源代码。看看实现的不同点。我想这是一个很艰难的过程。

    当然是不是可以把该问题发到Sql Server的论坛,看看有没有人能解答。
    2009年7月28日 16:47

全部回复