当前位置: 代码迷 >> ASP.NET >> sql server2000 ntext字段乱码有关问题
  详细解决方案

sql server2000 ntext字段乱码有关问题

热度:8888   发布时间:2013-02-25 00:00:00.0
sql server2000 ntext字段乱码问题?
原来有一个老系统使用asp开发的,数据库是sql server2000,其中有部分字段是ntext的,存储的有中文,但是在数据库中中文显示的都是乱码,但是在系统中显示出来是正确的中文。
现在用asp.net2.0重新开发了这个系统但是数据库不变,但是这个时候从数据库读取ntext字段的时候中文就变成乱码了。
不知道如何才能实现正确的显示中文。
谢谢。

------解决方案--------------------------------------------------------
是加密和解密
你没有解密
当然是乱码
------解决方案--------------------------------------------------------
没见过这中情况,有心帮你,无力回天啊
------解决方案--------------------------------------------------------
应该是编码问题...

ASP的默认编码是本地ANSI码...简体中文就是GB2312...而ntext的编码是Unicode码...ASP.NET的默认编码又是UTF-8码...不乱才怪呢...

要么在读写数据时转码...要么就把新系统编码也设置为GB2312...
------解决方案--------------------------------------------------------
一般做asp开发的网页中编码为gb2312,而在asp.net中网页默认编码为utf8,所以原来系统中的中文字符在asp.net下显示不正常,可以在web.config中<system.web></system.web>增加一个节点:<globalization requestEncoding="gb2312" responseEncoding="gb2312"/>,一般情况下不建议使用gb2312编码,因为遇到生僻字显示不出来,但是你这为了兼容以前的数据,就需要这么做了。

------解决方案--------------------------------------------------------
去数据库里看一下是否在数据库内就已经成乱码了
------解决方案--------------------------------------------------------
改為gb2312是一個辦法,但後期可能碰到其他問題.
是好想辦法把數據庫中的原來亂碼文本轉成unicode編碼保存,也就是不讓其亂碼,然後asp.net也使用unicode

------解决方案--------------------------------------------------------
请看,这有帮助吗:
http://www.winmag.com.cn/forum/itemdisplay.asp?boardid=26&id=383932
------解决方案--------------------------------------------------------
ntext是UTF-8编码字符,支持世界上任何编码,存储在数据库中显示是乱码是正常的。使用UTF-8页面也要设置成UTF-8不能使用GB2312否则就是乱码
------解决方案--------------------------------------------------------
同情中。。。
------解决方案--------------------------------------------------------
也可能是浏览器出了问题!
------解决方案--------------------------------------------------------
你把数据从数据库中读到string对象中时已经被转为UTF-16码了...输出时再转码...

UTF-8码和UTF-16码虽然都是Unicode码...但Unicode码却不等于UTF-8码...

还是读取数据时转码吧...最好是治本写个工具把旧数据都转成UTF-8码后再存回去...
------解决方案--------------------------------------------------------
数据库中的字段是ntext的,不就是unicode编码么? 
怎么才能把乱码文本转换成unicode的?
-----------------------------
根據你所說,在SQL Server中已經亂碼,但是在ASP不會亂碼,說明完全可以通過轉換編碼正確顯示出來.
所以你可以寫一個程序,利用.net類庫中的System.Text.Encoding下的功能,把數據庫中有亂碼的文本以ASP程序中的編碼讀取出來,然後再轉換為unicode編碼,至於是使用utf-8還是utf-16是無關緊要的(我的經驗使我是這樣認為的).
不知道你的ASP是用的什么編碼,你應該查一下ASP源碼,不要隨便就以為是gb2312.也可以通過測試得知.

------解决方案--------------------------------------------------------
asp的文件里面的meta头里面写的是charset=gb2312 
--------------------------
這個並不是,這個是告知客戶端瀏覽器使用的編碼.如果你的ASP代碼中沒有設置Session.CodePage的話,默認應該就是gb2312.
------解决方案--------------------------------------------------------
Mark!
------解决方案--------------------------------------------------------
确实很奇怪 asp读出来就没问题
------解决方案--------------------------------------------------------
哈哈,学习了,谢谢
------解决方案--------------------------------------------------------
是加密和解密 
你没有解密 
当然是乱码
------解决方案--------------------------------------------------------
我也认为是加了密的缘故.同意29楼的说法.
  相关解决方案