最近使用jQuery遇到中文乱码问题,其实他的中文乱码就是因为contentType没有指定编码,只需在jQuery.js中搜索
’contentType’
然后在application/x-www-form-urlencoded后面加上
; charset=UTF-8
最终变成
contentType:"application/x-www-form-urlencoded; charset=UTF-8"

问题搞定。

AJAX的中文乱码可以大概分为两中:

第一种是向服务器端发送中文参数
这种经过我自己的测试,最简单的方法其实就是进行urlencode(php/javascript/asp.net都提供相应的功能函数,很方便,都成功通过测试)。(详细请参考URI (RFC-2396)字符串进行编码)

javascript:  编码encodeURI <---> 解码decodeURI

var url_dirname=encodeURI("中文");      //编码
var dirname=decodeURI(url_dirname);     //解码


php:  编码urlencode <---> 解码urldecode
$url_dirname=urlencode('中文');             //编码
$dirname=urldecode $url_dirname();      //解码

asp.net   编码Server.UrlEncode<---> 解码Server.UrlDecode
string url_dirname=Server.UrlEncode('中文');        //编码
string dirname=Server.UrlDecode( url_dirname);    //解码

我在前台页面用javascript 的encodeURI对中文参数进行编码, 后台则用php的urldecode 或asp.net的Server.UrlDeconde函数进行解码,是完全没问题的哦,因为有RFC-2396标准嘛!

第二种就是服务器端向客户端输出中文时出现乱码
最简单的做法是将三个页面(前台html页面,jquery.js脚本页面,后台cgi页面这三个页面)都强制统一采用utf-8或统一采用gb2312编码(在这里建议采用utf-8,要与国际接轨嘛,呵呵),如果还不行,也可以在jquery.js里面做点小修改,具体做法便是

打开jQuery.js文件,找到"application/x-www-form-urlencoded",在其后面加上
"; charset=UTF-8"

即最终变成
contentType:"application/x-www-form-urlencoded; charset=UTF-8"