问题描述:
1、开发环境:本地:XP+oracle9i+vs.net2003;数据存放在远程数据库oracle9i中编码字符集为American_America.US7ASCII
2、代码:
string cnString = ConfigurationSettings.AppSettings["ConnectionString"];
OracleConnection cn = new OracleConnection(cnString);
OracleCommand cmd = new OracleCommand();
cmd.Connection = cn;
cmd.CommandText = "GET_SE";
cmd.CommandType = CommandType.StoredProcedure;
OracleDataAdapter da = new OracleDataAdapter(cmd);
OracleDataAdapter da = new OracleDataAdapter("select se,mc from zsxx",cn);
DataSet ds = new DataSet();
da.Fill(ds,"SE");
DataGrid1.DataSource = ds.Tables["SE"].DefaultView;
DataGrid1.DataBind();
3、说明:字段se为NUMBER型,mc为nvarchar2,且mc为中文数据,就是这中文无法正常显示。
         不能更改数据库,因为是远程数据库,只给查询权限!
4、试过的方法:
   (1)修改过web.config文件<globalization requestEncoding="gb2312" responseEncoding="gb2312" fileEncoding="gb2312"/>
    (2)另存为过显示页,并更改其保存编码。
查了很久也没能解决,希望达人帮助,分随你要,当然尽我所有了。国
    (3)byte[]   arr=System.Text.Encoding.UTF7.GetBytes(str); 前三个贴:2006-11-2 17:22:49  http://community.csdn.net/Expert/topic/5128/5128785.xml?temp=.181637
2006-11-1 17:20:17 的贴:http://community.csdn.net/Expert/topic/5122/5122582.xml?temp=.7934992
2006-10-31 15:56:32 的贴http://community.csdn.net/Expert/topic/5125/5125835.xml?temp=.6941645

解决方案 »

  1.   

    老大真有钱呀,,,,,,,
    去数据库版问吧
    而且现在搞SQL SERVER的比较多啦
      

  2.   

    对oracle不熟悉,上午我有一个sqlserver的这种问题,解决了.但是oracle的实在不清楚,建议去oracle论坛问问
      

  3.   

    对,到oracle版块去问!gb2312改为UTF-8试了没?
      

  4.   

    回:tiantian1980(天天) 
    早试了
      

  5.   

    DataGrid1.DataSource = ds.Tables["SE"].DefaultView;
    改为DataGrid1.DataSource = ds.Tables["SE"];
    试试
      

  6.   

    樓主運行下列 SQL ,把服務器返回的結果貼上來select * from V$NLS_PARAMETERS  

    select * from NLS_DATABASE_PARAMETERS
      

  7.   

    本机的 NLS_LANG  没有配置正确。
      
      

  8.   

    cityhunter172(寒羽枫) 
    select * from v$nls_parameters;
    查询本地字符集结果如下:
    1NLS_LANGUAGESIMPLIFIED CHINESE
    2NLS_TERRITORYCHINA
    3NLS_CURRENCYRMB
    4NLS_ISO_CURRENCYCHINA
    5NLS_NUMERIC_CHARACTERS.,
    6NLS_CALENDARGREGORIAN
    7NLS_DATE_FORMATDD-MON-RR
    8NLS_DATE_LANGUAGESIMPLIFIED CHINESE
    9NLS_CHARACTERSETUS7ASCII
    10NLS_SORTBINARY
    11NLS_TIME_FORMATHH.MI.SSXFF AM
      

  9.   

    說明你的字符集不是 AMERICAN_AMERICA
    而是 SIMPLIFIED CHINESE_CHINA.US7ASCII
    把 HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0(或1)\NLS_LANG 改成它試試
      

  10.   

    select * from V$NLS_PARAMETERS  

    select * from NLS_DATABASE_PARAMETERS
    查出的是服務器的字符集,所以客戶端也要換成一致的字符集
      

  11.   

    cityhunter172(寒羽枫)
    把 HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0(或1)\NLS_LANG 改成它試試
    当然也是AMERICAN_AMERICA.US7ASCII
      

  12.   

    要是還不太清楚,運行此 SQL
    select userenv('language') from dual
    可得到完整的服務器字符集
      

  13.   

    建议在本地数据库(中文字符)中建立一个同样的表,把数据拿过来以后再查询:1)建立远程数据库的数据链路;
    2)转换本地数据库的字符集为远程字符集;
    3)通过数据链路把远程数据拿过来;
    4)转换本地数据库的字符集为中文字符集;
    5)通过SQL语句查询为中文。以上前四步可以在存储过程中解决。附:字符集转换存储过程:CREATE OR REPLACE PROCEDURE P_CHAR AS
    /*
    Added By xuanxingmin@2006-10-20
    把字符转换成ERP字符集——WE8DEC
    */
    BEGIN
      BEGIN
          EXECUTE IMMEDIATE 'CREATE DATABASE  CHARACTER SET WE8DEC';
      EXCEPTION WHEN OTHERS THEN
          NULL;
      END;
    END P_CHAR_ERP;--------------------------------------------------------------
    我努力所以我优秀!!!
    --------------------------------------------------------------
      

  14.   

    http://www.itpub.net/542536,1.html
    這是 ITPUB 中的一個已解決的問題,請參考。他的問題如下:oracle服务器字符集为:Simplified Chinese_China.US7ASCII
    jsp页面字符集设置为:charset=UTF-8当从oracle得到字符后,汉字出现乱码。解決方式:
    对所有关注这个问题的同志表示感谢!这个问题已经解决了,下面我来说说解决过程:
    使用如下函数转换后即可:new String(rs.getString(1).getBytes("8859_1"),"gb2312")。
    解决这个问题的关键是理解各种编码方式的区别,因为US7ASCII是单字节编码的,而gb2312是双字节编码,所以页面显示会出现乱码。又因为US7ASCII和ISO8859_1都是单字节编码,虽然系统报不支持US7ASCII但是使用"8859_1"就可以。所以大家以后遇到这样的例子希望能够举一反三。
      

  15.   

    xuanxingmin(小雨轻轻下) 
    nnGB的数据
      

  16.   

    爱莫能助啊,去PUB吧,那的ORACLE用的多些
      

  17.   

    应该是字符集的问题
    http://www2.ccw.com.cn/tips/9906/062804_04.asp
      

  18.   

    你还可以试试用oledb conncection连接到数据库别用Oracle conncection
      

  19.   

    这个问题我碰到过。应为公司是为美国一家银行服务的,所以oracle的编码也是UK编码。我用的是java.
    后来我用两个方法解决了这个问题。一个是 java 自带的BASE64编码可以搞定。还有一格是我写的编码算法。原理是这样的。
    放进去时:String->Char->Byte->String. 取出来时:String->char->byte->String.
    搞定。
    当然中间还有一些比较复杂的处理过程。这个是中心思想。
    楼主可以加我的QQ:240300015   MSN:[email protected]
      

  20.   

    mc=System.Text.Encoding.GetEncoding("gb2312").GetString(System.Text.Encoding.ASCII.GetBytes(mc));
      

  21.   

    54powerman(彗星撞地球)
    你说的我试过了 
    对于oracle用American_America.US7ASCII编码 
    你这招没有用的
      

  22.   

    接分。试试UTF-8
    我是搞WAP的,以前碰到许多编码问题,都用UTF-8解决了。ORACLE没用过。
      

  23.   

    去itpub上问问
    那里的Oracle高手很多
      

  24.   

    看来没帮上你忙,建议你去Oracle网站看下!
    中国ORACLE用户讨论组 http://www.oracle.com.cn/   
    http://www.oracle.com/technology/global/cn/tech/dotnet/index.html
      

  25.   

    gb2312改为UTF-8试了没?
    數據庫的字段是否是nvarchar2型。
    數據庫的語言。
      

  26.   

    wangyoucao1015(忘忧草)
    数据库用的字符集是US7ASCII,接收后如何转换?
      

  27.   

    哥们没用过oracle开发过,只能up了
      

  28.   

    用oracle也出现了问题了,帮你顶...