数据库取出中文数据出现乱码的问题
2009-08-19 14:39
351 查看
最近在做OA系统方面的开发与维护,在测试环境下,遇到一个问题。
在一个功能查询时,用gridview显示的数据,有些列中,如果是中文的,就出现乱码的情况,并且也不是所有列的中文显示都不对。
通过设置断点,一直跟到了从数据库中取得数据的代码上,排除了展示页面中的问题。也就是说,从数据库中取出来的数据就不对了。
我在查询分析器中直接写SQL语句取数据库中数据,能得到正确的数据。因为在取满足条件的数据时使用了存储过程,所以,又执行了一次存储过程。发现,就是存储过程出来的数据不对。
这个存储过程的功能是这样的:
1、建一张临时表
2、取出满足条件的数据到这个临时表中。
3、取出委托办理的数据到这个临时表中。
4、用distinct返回所有不重复的数据。
在生产环境下因为没有动,一直都正常。测试环境最近因为一些原因,把系统重新安装了。数据库也重新安装了,换成了英文版的。
我从几个地方来比较了一下:
1、存储过程是否被修改了。 比较后:一切OK
2、数据库的字符集属性被修改了。 由于Oracle中存在这种情况,首先我先怀疑是字符集的语言被修改了,但我也不知道如何调整。所以,我就从存储过程着手,通过Print打印出一些脚本信息。发现只要经过了临时表的数据,出来就不对。看来是临时表的问题。
我试着把varchar改为nvarchar后,发现显示就正常了。看来是新建的临时表的问题。
我又比对了一下另外的数据表的脚本,发现varchar的字段,后面都加了个字符集语言,指定为中文: COLLATE Chinese_PRC_CI_AS,例如:[User_Name] varchar(30) COLLATE Chinese_PRC_CI_AS
看来问题就在这儿了。我把所有的varchar类型的字段,都指定了字符集语言后,一切正常了。
以前一直使用中文版的SqlServer,一直也没注意这个字符集的问题,这次换成英文版的SqlServer后,它会默认字符集语言为当前SqlServer版本语言,所以取出来的中文信息就不对。这也提醒了我以后在这方面也必须注意了。
你是否也遇到过这种情况呢,是否也在对产生的一些问题莫名其妙的呢?其实,多了解一些东西,多注意一些细节的地方,这些问题都不再是问题。
希望这个文章对你有所帮助,虽然只是一个很简单的问题,很基础的问题。
在一个功能查询时,用gridview显示的数据,有些列中,如果是中文的,就出现乱码的情况,并且也不是所有列的中文显示都不对。
通过设置断点,一直跟到了从数据库中取得数据的代码上,排除了展示页面中的问题。也就是说,从数据库中取出来的数据就不对了。
我在查询分析器中直接写SQL语句取数据库中数据,能得到正确的数据。因为在取满足条件的数据时使用了存储过程,所以,又执行了一次存储过程。发现,就是存储过程出来的数据不对。
这个存储过程的功能是这样的:
1、建一张临时表
2、取出满足条件的数据到这个临时表中。
3、取出委托办理的数据到这个临时表中。
4、用distinct返回所有不重复的数据。
在生产环境下因为没有动,一直都正常。测试环境最近因为一些原因,把系统重新安装了。数据库也重新安装了,换成了英文版的。
我从几个地方来比较了一下:
1、存储过程是否被修改了。 比较后:一切OK
2、数据库的字符集属性被修改了。 由于Oracle中存在这种情况,首先我先怀疑是字符集的语言被修改了,但我也不知道如何调整。所以,我就从存储过程着手,通过Print打印出一些脚本信息。发现只要经过了临时表的数据,出来就不对。看来是临时表的问题。
我试着把varchar改为nvarchar后,发现显示就正常了。看来是新建的临时表的问题。
我又比对了一下另外的数据表的脚本,发现varchar的字段,后面都加了个字符集语言,指定为中文: COLLATE Chinese_PRC_CI_AS,例如:[User_Name] varchar(30) COLLATE Chinese_PRC_CI_AS
看来问题就在这儿了。我把所有的varchar类型的字段,都指定了字符集语言后,一切正常了。
以前一直使用中文版的SqlServer,一直也没注意这个字符集的问题,这次换成英文版的SqlServer后,它会默认字符集语言为当前SqlServer版本语言,所以取出来的中文信息就不对。这也提醒了我以后在这方面也必须注意了。
你是否也遇到过这种情况呢,是否也在对产生的一些问题莫名其妙的呢?其实,多了解一些东西,多注意一些细节的地方,这些问题都不再是问题。
希望这个文章对你有所帮助,虽然只是一个很简单的问题,很基础的问题。
相关文章推荐
- python读取数据库数据,读取出的中文乱码问题
- 解决方法:ASP读取数据库中的中文数据出现乱码的问题
- 外部数据文件导入数据库的时候出现中文乱码的问题
- Java 简单解决springmvc获取properties文件里面中文内容出现论码问题(我遇到的问题是数据提交检验时返回的错误提示出现乱码)
- PHP 从数据库Mysql中读取数据生成excel(解决乱码问题,解决中文变问号问题)
- SQL Server插入中文数据出现乱码问题
- java项目存储数据到数据库出现中文乱码,解决办法
- python 链接 ORACLE 数据库,并打印数据.解决中文乱码问题
- jsp中向数据库中插入数据及中文乱码问题
- iOS 中json解析数据出现中文乱码的问题
- ajax请求数据,Json返回到页面的数据出现中文乱码问题。
- 遇到问题-用StreamReader读取数据时出现乱码,streamwriter写入中文时出现乱码
- 【Web后端笔记】jsp传递中文数据出现乱码的问题
- 解决jsp插入数据库中的数据出现乱码问题
- web开发中文数据写入到数据库乱码问题
- 最近遇到ajax获取数据出现中文乱码问题
- JSP MySQL插入数据时出现中文乱码问题的解决方法
- SSM框架Jsp页面POST提交的中文数据保存到数据库变成乱码问题的分析
- mysql反向生成hbm.xml后,由hibernate向sql写数据中文出现乱码问题
- web项目存数据到数据库发生中文乱码的问题