日期:2014-05-17  浏览次数:20399 次

高分求助:关于Varchar中文乱码的问题
问题描述:网页中编码UTF-8,插入数据库的字段类型为Varchar,出现一连串“????????????”,
直接在数据库该字段输入中文,中文也会存储为一连串问号。请问有什么办法把这些问号变成中文,多谢!

把字段类型改为nvarchar后,存储中文正常。现在是想把之前的数据恢复中文。

数据库为SqlServer 2008 英文版
数据库排序规则为:SQL_Latin1_General_CP1_CI_AS

已经用过失败的方法:
1 select convert(nvarchar(10), 字段名)
2 select cast(字段名 as nvarchar(10)) 
3 直接更改字段类型为nvarchar
4 修改web.config
<system.web>
  ...
  <globalization requestEncoding="gb2312" responseEncoding="gb2312" />
</system.web>


------解决方案--------------------
非常简单,数据库搬迁到简体中文版的系统下,转换为nvarchar再恢复到英文服务器。

第1到第三的问题都是,用非gb2312编码将gb码转换为unicode,肯定乱码。

第4个方案,赶紧还原了吧,它从根本上会扰乱asp.net 运行。
------解决方案--------------------
nvarchar表示以Unicode格式存储可变长度的 数据,所以能显示中文,而varchar是用非unicode存储数据,所以乱码。

因此,改为nvarchar,无论如何保证入库时正常的,至于之前的数据出现?,不知道如何恢复,只能改为nvarchar保证以后数据为正常入库.
------解决方案--------------------
看看数据库中用的什么字库,估计是不兼容中文http://www.2cto.com/database/201112/115153.html
------解决方案--------------------
“非常简单,数据库搬迁到简体中文版的系统下,转换为nvarchar再恢复到英文服务器。”

1楼的方法可以试下。
------解决方案--------------------
这和程序无关,和代码无关,修改系统设置即可。

修改非Unicode程序的语言:
控制面板-->区域和语言-->管理-->更改系统区域设置-->选择[中文(简体,中国)]

------解决方案--------------------
数据库改成中文版的。
------解决方案--------------------
探讨
数据库改成中文版的。