AJAX在ResponseText后出现乱码的解决方法

来源:互联网 发布:黑龙江网络广播电视 编辑:程序博客网 时间:2024/05/21 17:53
AJAXResponseText后出现乱码的解决方法
       在做DHTML培训课程作业中的AJAX实现时,遇到了上面标题处的问题,一开始琢磨了好久,也尝试了不少的方法,但问题仍然没有解决,在网上搜到的答案都是类似的修改AJAX发送请求的编码格式,
       下面为援引的一段话:
       “用AJAX来GET回一个页面时,RESPONSETEXT里面的中文多半会出现乱码,这是因为xmlhttp在处理返回的responseText的时候,是把resposeBody按UTF-8编码进解码考形成的,如果服务器送出的确实是UTF-8的数据流的时候汉字会正确显示,而送出了GBK编码流的时候就乱了。解决的办法就是在送出的流里面加一个HEADER,指明送出的是什么编码流,这样XMLHTTP就不会错乱。”
       上面提到的HEADER处理,我通过以下方式来设置:
       xmlHTTP.setRequestHeader("Content-Type","text/html;charset=gb2312");在尝试了此方法后,问题依然,此后也尝试了使用escape和unescape方法来进行编码,效果不是很理想。
       后来给Ken Woo发邮件咨询,得到了比较全面的答复,在此表示感谢!
       援引如下:
              “编码问题涉及三个方面:
1, Server端的文件保存使用的编码;
2, IIS使用的HTTP请求和返回的文本编码;
3, 浏览器显示的时候使用的编码。
 
1,在VS.net开发环境中打开文件,菜单中选择:文件->高级保存选项->编码可以看到文件的编码;
2,如果是使用VS.net管理Web项目,则在web.config中有:<globalization requestEncoding="utf-8" responseEncoding="utf-8" />
3,在客户端的IE中,鼠标右键,选择编码,可以切换客户端用于显示的编码。
如果三者对应不上,可能就会发生乱码问题。可以看看这里是怎么解决的:
http://blog.haha168.com/blogview.asp?logID=108,虽然不是使用JS但是原理是一样的,使用“adodb.stream””
 
       我是通过一下方法解决的:
       首先,打开要xmlHTTP的对象,然后按照上面的第1种方法(首先切换页面到HTML代码编辑模式,反之无法找到对应的高级保存选项),然后选择UTF-8(无签名)编码方式,
保存后即可,前提是要保持上面的一直性。
如果大家有遇到类似问题,希望可以在这里找到答案!
 
 
原创粉丝点击