两天问题未能解决,继续:1000分求获取oracle数据乱码问题,顶者有分,以结200分。

tqg1023 2006-11-02 05:22:49
问题描述:
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);
...全文
420 45 打赏 收藏 转发到动态 举报
写回复
用AI写文章
45 条回复
切换为时间正序
请发表友善的回复…
发表回复
jakiejia 2006-11-03
  • 打赏
  • 举报
回复
不懂啊
逍遥散人 2006-11-03
  • 打赏
  • 举报
回复
你在sql*plus里面查询出来的中文是乱码么?
hcl8260 2006-11-03
  • 打赏
  • 举报
回复
顶完再学习
tqg1023 2006-11-03
  • 打赏
  • 举报
回复
oracle服务器端和客户端都是American_America.US7ASCII,

你试试修改Web.config文件中的<globalization requestEncoding="iso-8859-1" responseEncoding="iso-8859-1" culture="zh-cn" />看一下!

<globalization requestEncoding="UTF-8" responseEncoding="UTF-8" fileEncoding="UTF-8"/>
以上方法都试过!
Allan168 2006-11-03
  • 打赏
  • 举报
回复
帮顶
kingkizhang 2006-11-03
  • 打赏
  • 举报
回复
你本地web服务器oracle客户端的编码和远程数据库中的一样吗?不一样的话是会乱码的
逍遥散人 2006-11-03
  • 打赏
  • 举报
回复
对了,如果你在web服务器有oracle客户端,但是字符集和服务器端的字符集不一样,我印象里面好像是不管怎么改程序配置,还是会乱码的
xiabingyin 2006-11-03
  • 打赏
  • 举报
回复
关注!
jedliu 2006-11-03
  • 打赏
  • 举报
回复
还有这篇文章你看下!
http://bbs.caoyuan.net/viewtopic.php?t=954
jedliu 2006-11-03
  • 打赏
  • 举报
回复
你试试修改Web.config文件中的<globalization requestEncoding="iso-8859-1" responseEncoding="iso-8859-1" culture="zh-cn" />看一下!
逍遥散人 2006-11-03
  • 打赏
  • 举报
回复
同意cityhunter172(寒羽枫)的说法,而且,在使用中文的情况下oracle客户端最好与服务器端的字符集保持一致,否则,即或你显示没有问题(这种现象我没遇见过,客户端与服务器字符集不一致的时候在我测试过的项目里中文显示从来没有正常过),但是在导入导出的时候你就该郁闷了
palts520 2006-11-03
  • 打赏
  • 举报
回复
UP
wshlxvb 2006-11-03
  • 打赏
  • 举报
回复
是不是你的系统有问题?或者IE有问题?试下。
或者远程系统服务器
的字符集有问题?
逍遥散人 2006-11-03
  • 打赏
  • 举报
回复
补充一下,如果你装了oracle客户端,试试按照楼上的方式把NLS_LANG修改成American_America.US7ASCII看看效果如何?
cityhunter172 2006-11-03
  • 打赏
  • 举报
回复
问一下 LZ ,试过 UTF-8 没有?
<globalization requestEncoding="UTF-8" responseEncoding="UTF-8" fileEncoding="UTF-8"/>
然后把 文件的保存编码也相应的另存为 UTF-8 with signature (带签名)

然后使用 PL-SQL 查询一下,看看是否乱码

还有,按照 napsoft(乡下人) 的做法,试着在装有 Oracle 客户端的电脑上(即运行 Web 的服务器)修改注册表 HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0(或1)\NLS_LANG (Oracle 连接使用的语言环境)。
我的办公环境是繁体,也曾遇到过乱码。我把它改成 AMERICAN_AMERICA.ZHT16BIG5 就 OK 了
你把它改成
AMERICAN_AMERICA.WE8ISO8859P1 或是 SIMPLIFIED CHINESE_CHINA.ZHS16GBK 两个都试一下吧

NLS_LANG 好象需要與 Oracle 服務器的環境一致才行吧,不太確定,呵呵。
zhaojiuchunlai 2006-11-03
  • 打赏
  • 举报
回复
DataSet ds = new DataSet();
ds.Locale=new System.Globalization.CultureInfo("zh-CN");
da.Fill(ds,"SE");


或改注册表,把
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0
的NLS_LANG值改成
AMERICAN_AMERICA.WE8ISO8859P1
即是西文,
SIMPLIFIED CHINESE_CHINA.ZHS16GBK
即中文
逍遥散人 2006-11-03
  • 打赏
  • 举报
回复
tqg1023():我知道oracle是远程的,但是,你的web发布程序是在本地吧?你要连接数据库需要设定net服务名吧?设定net服务名需要安装oracle客户端吧?那么,安装完oracle库户端后需要修改客户端的字符集与远程数据库的字符集一致
tqg1023 2006-11-03
  • 打赏
  • 举报
回复
在绑顶之前已经是乱码啦!!!
hei__an 2006-11-03
  • 打赏
  • 举报
回复

帮顶,只是不能帮你解决。。。
tqg1023 2006-11-03
  • 打赏
  • 举报
回复
oracle的字符集是无权修改的!!!
加载更多回复(25)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧