网络编程
位置:首页>> 网络编程>> Asp编程>> ajax返回中文乱码问题解决

ajax返回中文乱码问题解决

 来源:asp之家 发布时间:2009-04-13 16:07:00 

标签:中文,ajax,乱码

  使用ajax获取服务器数据返回给客户端,出现中文乱码。在之前的一个ajax应用中指定codepage=936,将所有页面编码都指定为GB2312即可解决。

  这次的应用中却无起作用了,经过多次的试验,客服端的编码应该绝对没有问题的。可以判断问题一定出在服务器端。稍微分析一下可知虽然服务器端指定了文件的编码格式,但对于服务器输出流就成为了怀疑的对象。由于使用MS SQL2000,采用unicode编码,所以返回数据给客户端将会出现unicode编码的中文在gb2312编码页面显示的问题。于是在服务器端输出流加一个HEADER:

  ASP程序中加入< %Response.Charset = "GB2312"%>即解决了这个问题。
  同样在php和jsp程序中的书写类似
  PHP:header('Content-Type:text/html;charset=GB2312');
  JSP:response.setHeader("Charset","GB2312");

  ajax产生乱码的原因整理如下
  1、xtmlhttp 返回的数据默认的字符编码是utf-8,如果客户端页面是gb2312或者其它编码数据就会产生乱码
  2、post方法提交数据默认的字符编码是utf-8,如果服务器端是gb2312或其他编码数据就会产生乱码

  解决办法有:
  1、若客户端是gb2312编码,则在服务器指定输出流编码
  2、服务器端和客户端都使用utf-8编码

最方便的方法如下:

不要转换任何模块网页的编码该utf-8的还是utf-8,该Gb22312的还是Gb2312
  在Utf-8模块的包文件(如conn.asp,但是要注意conn.asp必须是在第一行调用)最前面加上
  < %@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
  < %Session.CodePage=65001%>
  在GB2312模块的包文件最前面加上
  < %@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
  < %Session.CodePage=936%>

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com