高分求助:关于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程序的语言:
控制面板-->区域和语言-->管理-->更改系统区域设置-->选择[中文(简体,中国)]
------解决方案--------------------数据库改成中文版的。
------解决方案--------------------