ajax 乱码问题.

来源:百度知道 编辑:UC知道 时间:2024/05/14 13:30:15
AJAX在Post中文的时候解决乱码的方法

加上设置字符编码的方法:
response.setHeader("charset","gb2312");

********************************************
看到的说明原文如下:

用AJAX来GET回一个页面时,RESPONSETEXT里面的中文多半会出现乱码,这是因为xmlhttp在处理返回的responseText的时候,是把resposeBody按UTF-8编码进解码考形成的,如果服务器送出的确实是UTF-8的数据流的时候汉字会正确显示,而送出了GBK编码流的时候就乱了。解决的办法就是在送出的流里面加一个HEADER,指明送出的是什么编码流,这样XMLHTTP就不会乱搞了。

PHP:header('Content-Type:text/html;charset=GB2312');
ASP:Response.Charset("GB2312")
JSP:response.setHeader("Charset","GB2312");

这是我在网上找到的解决办法.但我不一是特清楚.他说的那行代码该加到哪里.哪位高人能给写个小例子.
我也可以给个例子.帮我看看该改哪里.

例子来自.Ajax 基础教程.一共两个文件.分别为simpleRequest.html;simpleResponse.xml.后一个文件内只有一行.是英文.改中文后就会乱码.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml

<head>
<title>Simple XMLHttpRequest</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

Ajax乱码问题:

产生原因:
主要有2个原因
1. xtmlhttp 返回的数据默认的字符编码是utf-8,如果前台页面是gb2312或者其它编码数据就会产生乱码.
2. post方法提交数据默认的字符编码是utf-8,如果后台是gb2312或其他编码数据就会产生乱码.

解决方法:

推荐方法:前台后台都用utf-8编码,这样可以省不少麻烦,从根本上解决了乱码问题.优点是效率高,而且符合目前的形式,utf-8编码本身就是一种比较优秀的编码,没有语言限制.缺点只能调用自己的后台编码或者其他的utf-8的编码.

前台更改为:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

后台asp中第一行加入如下代码
<%@LANGUAGE="JAVASCRIPT" CODEPAGE="65001"%>
<% Response.Charset="utf-8"; %>
<% Session.CodePage=65001; %>

后台如果有html代码也需保证
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

补救的方法是进行编码转换.可以在客户端也可以在服务器端进行编码转换.优点是没有任何限制,缺点效率低.
可参考本站的WEB代理