单位的Oracle安装时,NLS_LANG是ASCII;  编程时引用ADO.NET自带的System.Data.OracleClient 命名空间(Oracle 的 .NET Framework 数据提供程序)建立数据库连接,查询结果就变成乱码(如下),不知道大家有没有这个烦恼。JH CYJH YT 
Jo2-8-02  Jo9bSMLo   我自己理解这个问题是:客户端和服务器端Oracle使用的字符集相同,但是开发工具的字符集不同,结果造成数据乱码。问题是如何修改.NET Framework中Oracle 的字符集

解决方案 »

  1.   

    [HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME1]
    下的NLS_LANG是什么?
      

  2.   

    TO wiler(@_@):
    ORACLE有两个设置字符集的地方,一个是在安装oracle的时候选择字条集,一般为chs16gb,具体哪几个字条记不大清了,这个是设置的服务器端的字符集,另一个有关字符集的地方就是在客户端,就是安装了ORACLE客户端的电脑上,在注册表里,既你说的那个地方,一般值为SIMPLIFIED CHINESE_CHINA.ZHS16GBK。
    TO楼主,有一个命令可以查出服务器端的字符集的,你可以查一下再下定论,那个ASCII不是字符集的意思吧
      

  3.   

    将你的开发工具的字符集转成与Oracle的字符集相同的不就可以了
    以下是转gb2312的
    Encoding enc = Encoding.GetEncoding("gb2312"); 
    Encoding unicode = Encoding.Unicode;
    Byte[] CS = Encoding.Convert(enc, unicode, yourBytes);char[] Chars = new char[unicode.GetCharCount(CS, 0, CS.Length)];
    unicode.GetChars(CS, 0, CS.Length, Chars, 0);
    string s = new string(Chars);
      

  4.   

    没转换过,再帮个忙。
    比如我现在有一个表GetTable1,一个控件a.
    GetTable1内的数据需要转换,然后绑定a,怎么写?
    private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    a.DataSource=GetTable1; this.a.DataBind();
    }
    public DataTable GetTable1
    {
    get
    {
    return (new MySystem()).GetTable1();
    }
    }
      

  5.   

    本人也遇到了同样的问题了:前提:
    Oralce Server 的字符集和 Oracle Client([HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME1]
    ) 字符集设置一样。(WE8ISO8859P1)现象:
       用PLSQL 工具查看记录,中文能正常显示
       用C#的oracle.client的组件编程导出数据记录(dataset),dataset内存里的值都是乱码?尝试:
       用内存的值强制转换为UTF-8,似乎还是乱码?