利用ASP.NET查出Oracle数据库中文乱码问题

开发 后端
本文作者在最近的开发过程中,遇到了Oracle出现中文乱码的问题。最终利用ASP.NET查出可能是Windows时区与字符集的设置有问题。下面我们来看一下作者的经历。

把这两天两次安装IBM2650服务器中出现的问题做一个总结:

1、***次安装,用IBM的引导盘引导,按步就班的下来,选择语言,做Raid5,选择Windows系统等等。安装好Windows2003企业版之后,再去安装Oracle时,安装到一半时,提示不能创建快捷方式。取消,再安装还是不能创建快捷方式,就那样安装上了。安装之后Oracle运行倒也正常,导入数据,发现中文变成了乱码。

再安装editplus和winrar发现显示窗口的中文也是乱码,右键菜单上的部分中文是乱码。在网上搜了一下,原来是Windows选择的字符集不对,在控制面板-语言修改成中文后,右键菜单上的中文正常显示了,查看Oracle数据库里的中文,也正常了。按说,到这里问题也就解决了,应该结束了。可是配置上ASP.NET网站之后,发现查询出来Oracle数据库中的中文,在网页上显示为乱码。

2、于是开始了解决Oracle数据库中中文在ASP.NET网页上显示为乱码的过程。在网上搜,绝大多数说是Oracle字符集的问题,可我觉得,用plsql developer查看中文正常,应该不是Oracle字符集的问题。下班了,晚上回去继续找,还是没有找到有效的解决办法。写了三个查看Oracle数据库中中文的小程序,一个是用VB6写成的,一个用.NET写成的Winform程序,一个用.NET写成的webform程序。同时计划比较服务器上的Oracle的字符集和和本机上的Oracle的字符集。

第二天,先运行VB6程序,显示Oracle数据库的中文正常,再运行.NET Winform程序Oracle数据库中的中文是乱码,运行.NET webform程序,Oracle数据库中的中文也是乱码。初步判断是.NET的字符集不正常。于是找怎么修改.NET的字符集的问题,找了半天也无找到有说.NET字符集的问题,可能不是.NET字符集的问题。

于是就查看了Oracle的字符集,结果发现服务器上的Oracle的字符集和我机器上的Oracle的字符集还真的不一样:我机器上的Oracle的字符集是中文NLS_CHARACTERSET:ZHS16GBK,而服务器上的字符集是:WE8MSWIN1252。那就想办法修改Oracle的字符集吧,可是由于对Oracle不是很熟悉,弄了老大一会也没有没有弄好,想把Oracle卸载了重装,结果不小心把系统也搞出了一些毛病,干脆重装了系统,注意了那些问题,安装之后也就一切OK。

3、分析:

1)安装Oracle时不能创建快捷方式,及安装其他程序也不能创建快捷方式,并且安装过程中窗口上中文是乱码,右键菜单上的部分中文是乱码,这个原因是Windows没有设置成中文,也就是在IBM的引导盘安装的过程中,不熟悉,没有注意选择正确的时区,正确的字符集造成的。

2)VB6程序显示的Oracle中文字符正常,而.NET显示的Oracle中文为乱码的原因应该是它们的机制不同造成的:VB6用的是oledb,它可能使用Oracle本身的字符集原样的显示了Oracle中的字符;而.NET用的是另外的一种机制,它要把Oracle中字符进行转换后再显示出来。(这只是我分析,没有找到证据)

【编辑推荐】

  1. ASP.NET视频教程
  2. 详解ASP.NET在SQL Server 2005上自定义分页
  3. ASP.NET MVC正式开源 官方教材随即发布(附下载链接)
责任编辑:彭凡 来源: cnblogs
相关推荐

2011-08-01 23:34:34

ASP.NETOracle

2010-06-02 12:32:29

MySQL数据库

2009-07-28 17:36:21

ASP.NET数据库连

2009-07-31 09:57:47

ASP.NET数据库缓

2009-02-23 15:20:03

SQL Server数据库ASP.NET

2009-07-28 12:35:37

querystring

2009-03-09 17:46:16

ASP.NETSQLOracle

2009-08-05 15:40:49

ASP.NET连接数据

2009-08-11 12:52:05

ASP.NET数据库程

2009-07-29 09:12:31

ASP.NET数据库连

2009-07-24 11:24:33

ASP.NET中文乱码

2009-07-28 14:16:31

ASP.NET与MyS

2010-05-25 08:49:33

连接MySQL

2009-09-13 22:35:12

ASP.NET数据库

2009-07-27 17:58:10

ASP.NET数据库编

2009-07-20 17:03:55

批量插入数据ASP.NET

2009-07-31 16:51:59

ASP.NET数据库驱

2009-07-29 09:33:14

ASP.NET数据库连

2011-07-12 14:37:47

ASP.NET链接字符串

2010-06-07 14:34:49

连接MySQL 数据库
点赞
收藏

51CTO技术栈公众号