CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

5天问题未能解决,继续:1000分求获取oracle数据乱码问题,顶者有分,已结500分

楼主tqg1023()2006-11-06 19:47:42 在 .NET技术 / ASP.NET 提问

问题描述:  
  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);  
   
    前5个贴:  
   
  2006-11-4   16:36:46     http://community.csdn.net/Expert/topic/5133/5133256.xml?temp=.3269159  
  2006-11-3   13:57:30     http://community.csdn.net/Expert/topic/5130/5130920.xml?temp=.7877771  
  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  
  问题点数:100、回复次数:71Top

1 楼lbiori241(残阳东升)回复于 2006-11-06 20:04:57 得分 1

我也遇到这样的问题,不知道怎么解决,帮你顶一下Top

2 楼webdiyer(.net资源精华—www.dotneturls.com)回复于 2006-11-06 20:15:07 得分 1

数据库编码为American_America.US7ASCII时保存的中文在数据库中不是乱码吗?如果数据库中就是乱码,那就难说了,还没有碰到过这种问题Top

3 楼weiqiaoxyz(魏大勇:情分比啥都重要!)回复于 2006-11-06 20:18:23 得分 1

没遇过这问题  
   
  之前用ORACLE弄过一个项目,是ASP写的,从未出现过楼主所说的情况!  
   
  帮顶了Top

4 楼liujia_0421(SnowLover)回复于 2006-11-06 20:45:32 得分 1

帮楼主顶了...  
   
  希望能解决,我也好学习一下...  
  Top

5 楼liujia_0421(SnowLover)回复于 2006-11-06 20:45:48 得分 1

再顶一下...Top

6 楼tqg1023()回复于 2006-11-07 07:59:18 得分 0

看来是没希望解决啦!!!!Top

7 楼leaohong(无定河)回复于 2006-11-07 08:00:41 得分 1

哎,LZ没去PUB问下么,在这用ORACLE的不多啊,友情帮顶Top

8 楼lizhizhe2000(武安侯)回复于 2006-11-07 08:14:48 得分 1

向楼主致敬!Top

9 楼tete(N多Flash-www.ndflash.com)回复于 2006-11-07 08:18:48 得分 1

帮顶,这么多天不解决,确实有点急啊  
  可以考虑到别的地方问问Top

10 楼Qim(莫名-从星做起......)回复于 2006-11-07 08:35:05 得分 1

建议给oracle公司打个电话问问。可行……Top

11 楼myminimouse(坚决不用baidu)回复于 2006-11-07 08:43:04 得分 1

帮顶~Top

12 楼hei__an(生活在黑暗中)回复于 2006-11-07 08:43:34 得分 1

帮楼主顶了...Top

13 楼qiaoxinwei(小新)回复于 2006-11-07 08:54:59 得分 1

顶帖才是硬道理Top

14 楼zlz_212(ShREk)回复于 2006-11-07 09:07:54 得分 1

一般在数据库中的数据就已经是乱码了。  
  最好能确认一下。Top

15 楼zlz_212(ShREk)回复于 2006-11-07 09:08:43 得分 1

如果不是乱码,可以在远程的机器上建立一个web   service然后由本地调用Top

16 楼tdtdtdtdtd123(飘)回复于 2006-11-07 09:09:38 得分 1

dingTop

17 楼smile9961(good life)回复于 2006-11-07 09:14:54 得分 1

upTop

18 楼hexf_hn(天蓝)回复于 2006-11-07 09:39:09 得分 1

打电话给oracle,会有答案的。Top

19 楼hanguoji84(北飘)回复于 2006-11-07 09:47:55 得分 2

byte[]       arr=System.Text.Encoding.UTF7.GetBytes(str);  
  这样写的方式不会有问题么?建议换成流的方式转下   byte,  
  你在配置文件中和页面保存的编码与代码页CS中的编码都要一致,这样才能避免乱码,建议页面的编码,配置文件的编码和你程序中的都要一致,即使是转换类型也用字节流的方式来转换,可以尝试下,小小的建议。Top

20 楼HJS1820(努力成為高手)回复于 2006-11-07 10:00:01 得分 1

幫頂Top

21 楼job_2006(初学.net)回复于 2006-11-07 10:03:37 得分 1

你丫的当我不识数,100当1000吼,^_^  
   
  帮顶帮顶,哈哈!~~Top

22 楼bJiao(乱搞)回复于 2006-11-07 10:28:49 得分 2

问题的关键是由于你的数据库编码是American_America.US7ASCII,中文保存进去时没有作处理,所以存进去的数据就是乱码。  
  除非保存数据时作处理,那么你取出来的数据就会是对的。  
   
  建议保存数据时用unicode编码,那样你可以正常显示。Top

23 楼greenberet007(阿宁)回复于 2006-11-07 10:32:52 得分 1

jfTop

24 楼tqg1023()回复于 2006-11-07 10:37:19 得分 0

回job_2006(初学.net)  
  呵呵,我是一天放100分,10天放1000分,而且,我的级别一次最高只能给100分呀。Top

25 楼cuizhanjun1981(城市稻草人)回复于 2006-11-07 10:44:00 得分 1

帮顶Top

26 楼Bird_fro(小方)回复于 2006-11-07 10:48:36 得分 1

只能帮顶了Top

27 楼TechieFeng()回复于 2006-11-07 10:49:54 得分 1

我也遇到这样的问题,不知道怎么解决,帮你顶一下  
  Top

28 楼123ppmove(迷茫)回复于 2006-11-07 10:51:45 得分 1

顶;;;;;;Top

29 楼Bird_fro(小方)回复于 2006-11-07 10:54:43 得分 1

没遇见过这类问题Top

30 楼penglewen(昨日如梦)回复于 2006-11-07 10:55:22 得分 1

只能顶一下.......Top

31 楼pol000(糊涂)回复于 2006-11-07 10:59:26 得分 1

顶一下.......Top

32 楼haok123(恭喜发财)回复于 2006-11-07 11:01:49 得分 1

一天100   你有多少分??Top

33 楼wangfeng0215(浪子)回复于 2006-11-07 11:07:39 得分 1

顶Top

34 楼crystal521(【云淡风轻】)回复于 2006-11-07 11:08:03 得分 1

先顶再说Top

35 楼cjmdaixi()回复于 2006-11-07 11:24:55 得分 1

狂定,时刻关注中!!Top

36 楼zhangyunqi()回复于 2006-11-07 11:30:18 得分 1

upTop

37 楼wanghu830424(阿虎)回复于 2006-11-07 11:39:45 得分 1

upTop

38 楼lch1234(枫)回复于 2006-11-07 11:41:17 得分 1

顶!!Top

39 楼lkh42002(HAI)回复于 2006-11-07 11:44:19 得分 1

↑↑↑↑↑↑  
  ↑↑↑↑↑↑Top

40 楼sunjiane()回复于 2006-11-07 11:52:28 得分 1

先顶一个再研究Top

41 楼CloneCenter(复制中心)回复于 2006-11-07 11:59:53 得分 1

不知道数据库中会不会有问题,另外再看看客户端的字符集是什么,有可能和本地的这个客户端字符集有关系。  
   
  看这个注册表键值:  
  HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0有一个键值:NLS_LANGTop

42 楼jackyped(MSN: jpu_jacky@eyou.com)回复于 2006-11-07 12:00:34 得分 1

我也遇到过  
  如果通过数据库编辑工具写汉字进去,读出来的就是汉字;  
  如果通过程序写汉字进去,完蛋了,再打开数据库看,都是乱码的。  
   
  在网上翻了很久没解决。  
  帮顶一下!Top

43 楼liujia_0421(SnowLover)回复于 2006-11-07 12:03:44 得分 1

再帮忙顶吧...  
   
  早日解决吧...Top

44 楼yangtu86(杨土)回复于 2006-11-07 12:18:56 得分 2

跟我的问题差不多。  
  试试  
  换一个数据库联接方式。  
  “Data   Source=MyOracleDB;Integrated   Security=yes;”  
  “Provider=msdaora;Data   Source=MyOracleDB;User   Id=myUsername;Password=myPassword;”  
  “Driver={Microsoft   ODBC   for   Oracle};Server=OracleServer.world;Uid=myUsername;Pwd=myPassword;”  
  http://www.connectionstrings.com/Top

45 楼test33(隐姓埋名)回复于 2006-11-07 12:38:45 得分 1

路过,顶过`Top

46 楼yujiasw()回复于 2006-11-07 12:51:01 得分 1

关注  
  Top

47 楼mlyb()回复于 2006-11-07 12:52:55 得分 1

支持一下,搂主忽悠人了,哈哈Top

48 楼cityhunter172(寒羽枫)回复于 2006-11-07 12:53:20 得分 10

花了几个小时时间,实验了   N   次,终于搞定   UTF-7   与   UTF-8   之间的转换  
  其它类型的楼自己写吧  
   
  System.Text.Encoding   en8   =   System.Text.UTF8Encoding.UTF8;  
  //首先要确保   this.TextBox1.Text   此时没有出现乱码,然后将其转成   char[]  
  char[]   ch8   =   en8.GetChars(en8.GetBytes(this.TextBox1.Text));  
   
  System.Text.Encoder   ed7   =   System.Text.UTF7Encoding.UTF7.GetEncoder();//获取   UTF7   的编码器  
  byte[]   bt7   =     new   byte[ed7.GetByteCount(ch8,0,ch8.Length,true)];//初始化存放   UTF7   编码的   byte[]  
   
  ed7.GetBytes(ch8,0,ch8.Length,bt7,0,true);//从   char[]   得到   UTF7   编码的   byte[]  
  this.TextBox2.Text   =   System.Text.UTF7Encoding.UTF7.GetString(bt7);//由   byte[]   得到   UTF7   编码的字串  
   
  //最好把上述     UTF7   的字串,以通过存储过程进行   Insert   Update   操作  
   
   
  //下列是从数据库中读取的   UTF7   转成   UTF-8,其实是一样的,你自己把它写成函数吧  
   
  System.Text.Encoding   en7   =   System.Text.UTF7Encoding.UTF7;  
  //首先要确保   this.TextBox1.Text   此时没有出现乱码,然后将其转成   char[]  
  char[]   ch7   =   en7.GetChars(en7.GetBytes(this.TextBox2.Text));  
   
  System.Text.Encoder   ed8   =   System.Text.UTF8Encoding.UTF8.GetEncoder();//获取   UTF8   的编码器  
  byte[]   bt8   =     new   byte[ed8.GetByteCount(ch7,0,ch7.Length,true)];//初始化存放   UTF8   编码的   byte[]  
   
  ed8.GetBytes(ch7,0,ch7.Length,bt8,0,true);//从   char[]   得到   UTF8   编码的   byte[]  
  this.TextBox3.Text   =   System.Text.UTF8Encoding.UTF8.GetString(bt8);//由   byte[]   得到   UTF8   编码的字串Top

49 楼free_wang()回复于 2006-11-07 12:59:36 得分 1

upTop

50 楼job_2006(初学.net)回复于 2006-11-07 13:02:13 得分 0

tqg1023()   (   )   信誉:100         Blog     2006-11-07   10:37:00     得分:   0      
     
     
        回job_2006(初学.net)  
  呵呵,我是一天放100分,10天放1000分,而且,我的级别一次最高只能给100分呀。  
       
     
   
  ========  
   
  开玩笑啦,哈哈  
  俺不懂oracle9i咯,帮你顶顶顶顶顶顶顶Top

51 楼H5K_kf()回复于 2006-11-07 13:21:55 得分 1

帮顶,等待高手指点。Top

52 楼whtportland(我是一朵漂浮的云) (总有一种力量它让我们抖擞精神)回复于 2006-11-07 14:01:41 得分 1

关注……Top

53 楼ylhyh(----------> www.cnpp.info <----------)回复于 2006-11-07 14:06:10 得分 3

楼主,给你个方法吧  
   
  1.数据驱动不要用OracleClient,改用OLEDB  
   
  2.用OleDB连接Oracle时:        
      OLEDB的连接字符串里,Provider不要用OraOLEDB.Oracle或OraOLEDB.Oracle.1,而是用MSDAORA或MSDAORA.1  
   
  好了,不会乱码了  
   
  ref:   http://topic.csdn.net/T/20050817/14/4214073.html  
  Top

54 楼cityhunter172(寒羽枫)回复于 2006-11-07 14:25:12 得分 5

System.Text.Encoding.GetEncoding("gb2312").GetString(bt7)//获取简体  
  System.Text.Encoding.GetEncoding("big5").GetString(bt7)//获取繁体  
   
   
  要是实在不行,就用下列办法吧,………  
   
  System.Text.Encoding   u8   =   System.Text.UTF8Encoding.UTF8;//此处由你的   Web.config   与页面的   charset   决定  
  byte[]   bt   =   u8.GetBytes(this.TextBox1.Text);  
  this.TextBox2.Text   =   System.Convert.ToBase64String(bt);   //Base64   编码后的字符,一个字符将产生   4   个字母  
   
  bt   =   System.Convert.FromBase64String(this.TextBox2.Text);  
  // System.Text.Encoding   u8   =   System.Text.UTF8Encoding.UTF8;  
  this.TextBox3.Text   =   u8.GetString(bt);//由   Base64   编码还原成字符Top

55 楼poorman19821018(流光飞舞)回复于 2006-11-07 14:31:00 得分 1

学习中,帮顶一下Top

56 楼bjgzxx(食人一族)回复于 2006-11-07 14:43:55 得分 2

我感觉UTF-8应该没问题Top

57 楼xgcom(xg)回复于 2006-11-07 14:53:06 得分 2

第一:用utf-8   编码,  
  第二:在本地搞一个相应的oracle数据库,方便查找原因。Top

58 楼dd_zhouqian()回复于 2006-11-07 15:23:53 得分 2

utf8,   我觉得这样可以解决问题  
  还有你在客户端查询,其实乱麻问题可能出现在客户端  
  另外你的数据库端用的是什么字符集建库的和这也有一定的关系  
  Top

59 楼raozhiven(朗屹)回复于 2006-11-07 15:30:02 得分 2

1、我想请问楼主,中文是如何存入数据库中的?  
  2、实在不行,就一个一个的试吧,无非就那么几种编码  
   
  System.Text.Encoding.Default.GetString(System.Text.Encoding.UTF7.GetBytes(strValue));  
   
  或  
   
  System.Text.Encoding.Default.GetString(System.Text.Encoding.UTF8.GetBytes(strValue));  
  Top

60 楼raozhiven(朗屹)回复于 2006-11-07 15:35:03 得分 5

http://topic.csdn.net/t/20040422/11/2995540.htmlTop

61 楼dan0926()回复于 2006-11-07 15:36:35 得分 1

接分~~Top

62 楼raozhiven(朗屹)回复于 2006-11-07 15:38:45 得分 2

http://blog.csdn.net/fan178/archive/2006/10/18/1339560.aspxTop

63 楼yaomin1985()回复于 2006-11-07 15:39:12 得分 1

帮你顶。。。。。。。。Top

64 楼l149778198()回复于 2006-11-07 15:41:51 得分 1

不知道         帮你定义个了Top

65 楼tqg1023()回复于 2006-11-07 16:28:04 得分 0

cityhunter172(寒羽枫)  
  对于数据库,我只有查询权!Top

66 楼yoshiki1895(养只水母玩玩)回复于 2006-11-07 16:39:13 得分 1

UPTop

67 楼cityhunter172(寒羽枫)回复于 2006-11-07 17:03:53 得分 11

那你的数据是怎么   Insert   与   Update   的?  
  我写的那些都是在放入数据库之前进行转码,从数据库取出后再进行反向转码。  
  楼主没明白?????  
  如果没有   Insert   与   Update   的权限,只是单纯的   Select   数据  
  那么乱码不是你的错,是存放数据的错。  
  因为若不作处理,放入时就已经产生乱码  
   
  就好比在   requestEncoding="gb2312"   条件下,charset='gb2312'   简体页面中输入繁体字,送到   Web   服务器就已是乱码,更不用说存入数据库了Top

68 楼tqg1023()回复于 2006-11-07 17:12:57 得分 0

数据输入程序是其它公司用JAVA作的。Top

69 楼Glen_qiu(简约)回复于 2006-11-07 17:31:56 得分 0

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();  
   
  这一个DATASET   存了二个表记录..只存一个试下.看可不可以解决Top

70 楼huazi4995(華仔)回复于 2006-11-07 18:23:36 得分 0

string   str=System.Text.Encoding.Unicode.GetString(ds.Tables["SE"].Rows[0]["mc"]);  
   
  试试这个Top

71 楼huazi4995(華仔)回复于 2006-11-07 18:29:02 得分 0

byte   []   b=System.Text.Encoding.Unicode.GetBytes(ds.Tables["SE"].Rows[0]["mc"].ToString());Top

相关问题

关键词

得分解答快速导航

  • 帖主:tqg1023
  • lbiori241
  • webdiyer
  • weiqiaoxyz
  • liujia_0421
  • liujia_0421
  • leaohong
  • lizhizhe2000
  • tete
  • Qim
  • myminimouse
  • hei__an
  • qiaoxinwei
  • zlz_212
  • zlz_212
  • tdtdtdtdtd123
  • smile9961
  • hexf_hn
  • hanguoji84
  • HJS1820
  • job_2006
  • bJiao
  • greenberet007
  • cuizhanjun1981
  • Bird_fro
  • TechieFeng
  • 123ppmove
  • Bird_fro
  • penglewen
  • pol000
  • haok123
  • wangfeng0215
  • crystal521
  • cjmdaixi
  • zhangyunqi
  • wanghu830424
  • lch1234
  • lkh42002
  • sunjiane
  • CloneCenter
  • jackyped
  • liujia_0421
  • yangtu86
  • test33
  • yujiasw
  • mlyb
  • cityhunter172
  • free_wang
  • H5K_kf
  • whtportland
  • ylhyh
  • cityhunter172
  • poorman19821018
  • bjgzxx
  • xgcom
  • dd_zhouqian
  • raozhiven
  • raozhiven
  • dan0926
  • raozhiven
  • yaomin1985
  • l149778198
  • yoshiki1895
  • cityhunter172

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo