AJAX的中文乱码可以大概分为两中,第一种是向服务器端发送中文参数时 (xmlhttp.open(“get|post”,url,true)),服务器端接收到的为乱码,这个也是我今天遇到的问题,没做处理之前,在IE里 是正常的,但是在Firefox里面就出现了乱码,我先把接收到参数输出到一个文本里,没有发现什么问题,郁闷了,然后我就把查询语句在输出来观察(我这 里是要从数据库里查出与参数相关的东西),终于发现问题,IE和Firefox输出的参数不一样,虽然汉字上都一样,但是和前后连接上有细小的区别,于是
认定了是编码问题,在网上查找了相关资料,都没能解决问题,但是得到一些启示,因为AJAX发送数据都是采用UTF-8编码的方式发送的,所以要在服务器 端进行编码转换(我这里页面是采用GB2312编码的,如果是采用UTF-8的话应该不会有这步的问题),所以我在服务器端进行了UTF-8转 GB2312,
$str=iconv("UTF-8","GB2312",$str);
然后测试,在Firefox上顺利解决了问题,以为大公告成了,可是再到IE下测试,发现IE又出现了问题,服务器端接收到的参数没值,这下就郁闷 了,突然看到发送头设置了setRequestHeader("Content-Type","application/x-www-form- urlencoded");,就找到问题所在了,然后就在发送那里进行了参数编码:
geturl=encodeURI(geturl);
geturl=encodeURI(geturl); //两次也可以写成geturl=encodeURI(encodeURI(geturl));
xmlhttp.open("GET",geturl,true);
然后再到服务器端进行URL解码:
$str=urldecode($str); //解码
$ str =iconv("UTF-8","GB2312",$ str); //编码转换
注意:解码必须在编码转换前面,不然得不到正确值
保存测试,IE和Firefox都能正常了。
第二种就是服务器端向客户端输出中文时出现乱码,这类问题网上的答案就比较多了,也都能解决,为了避免各位再去查找,我在这里就COPY下J
原因:AJAX在接收responseText或responseXML的值的时候是按照UTF-8的格式来解码的,如果服务器段发送的数据不是UTF-8的格式,那么接收responseText或responseXML的值有可能为乱码。
欢迎访问http://www.xiangha.com
解决办法:
在服务器指定发送数据的格式:
在jsp文件中:
response.setContentType("text/text;charset=UTF-8");//返回的是txt文本文件
或是
response.setContentType("text/xml;charset=UTF-8");//返回的xml文件
PHP:header('Content-Type:text/html;charset=GB2312');
ASP:Response.Charset("GB2312")
JSP:response.setHeader("Charset","GB2312");
AJAX的中文乱码可以大概分为两中,第一种是向服务器端发送中文参数时 (xmlhttp.open(“get|post”,url,true)),服务器端接收到的为乱码,这个也是我今天遇到的问题,没做处理之前,在IE里 是正常的,但是在Firefox里面就出现了乱码,我先把接收到参数输出到一个文本里,没有发现什么问题,郁闷了,然后我就把查询语句在输出来观察(我这 里是要从数据库里查出与参数相关的东西),终于发现问题,IE和Firefox输出的参数不一样,虽然汉字上都一样,但是和前后连接上有细小的区别,于是
认定了是编码问题,在网上查找了相关资料,都没能解决问题,但是得到一些启示,因为AJAX发送数据都是采用UTF-8编码的方式发送的,所以要在服务器 端进行编码转换(我这里页面是采用GB2312编码的,如果是采用UTF-8的话应该不会有这步的问题),所以我在服务器端进行了UTF-8转 GB2312,
$str=iconv("UTF-8","GB2312",$str);
然后测试,在Firefox上顺利解决了问题,以为大公告成了,可是再到IE下测试,发现IE又出现了问题,服务器端接收到的参数没值,这下就郁闷 了,突然看到发送头设置了setRequestHeader("Content-Type","application/x-www-form- urlencoded");,就找到问题所在了,然后就在发送那里进行了参数编码:
geturl=encodeURI(geturl);
geturl=encodeURI(geturl); //两次也可以写成geturl=encodeURI(encodeURI(geturl));
xmlhttp.open("GET",geturl,true);
然后再到服务器端进行URL解码:
$str=urldecode($str); //解码
$ str =iconv("UTF-8","GB2312",$ str); //编码转换
注意:解码必须在编码转换前面,不然得不到正确值
保存测试,IE和Firefox都能正常了。
第二种就是服务器端向客户端输出中文时出现乱码,这类问题网上的答案就比较多了,也都能解决,为了避免各位再去查找,我在这里就COPY下J
原因:AJAX在接收responseText或responseXML的值的时候是按照UTF-8的格式来解码的,如果服务器段发送的数据不是UTF-8的格式,那么接收responseText或responseXML的值有可能为乱码。
解决办法:
在服务器指定发送数据的格式:
在jsp文件中:
response.setContentType("text/text;charset=UTF-8");//返回的是txt文本文件
或是
response.setContentType("text/xml;charset=UTF-8");//返回的xml文件
PHP:header('Content-Type:text/html;charset=GB2312');
ASP:Response.Charset("GB2312")
JSP:response.setHeader("Charset","GB2312");
欢迎访问http://www.xiangha.com
分享到:
相关推荐
Ajax中文乱码问题解决方案
ajax提交时,后台接收的参数出现中文乱码的解决方法,
这是一个ajax解决乱码的问题WEBSERVICE项目
Ajax 中文乱码问题 Ajax 中文乱码问题 Ajax 中文乱码问题
jquery+asp ajax 中文乱码问题解决文档
java认证_Ajax中文乱码问题及解决方法.doc
今天终于解决了AJAX的中文乱码问题,写篇文章来帮助一下有同样问题的朋友们。我的开发环境:XP, eclipse,使用GB18030编码。 当遇到这个问题时,到网上去查了好多文章,提到几种解决方案,如:全站UTF-8编码;请求头...
解决AJAX中文乱码问题,本人亲测,测试系统WIN2008,其他系统请自行测试。包括源码和说明
ajax乱码ajax乱码ajax乱码ajax乱码ajax乱码ajax乱码ajax乱码ajax乱码ajax乱码ajax乱码
ajax乱码问题.ajax乱码问题的一些解决方案,总结网友的一些方法。
GBK编码下jQuery_Ajax中文乱码解决方案
NULL 博文链接:https://zmx.iteye.com/blog/643075
简单整理的乱码处理方案,jquery的ajax解决UTF-8以及GBK的问题
NULL 博文链接:https://smallq.iteye.com/blog/359112
本人收集的解决Ajax的乱码解决办法,自己试了很多,确实能够解决问题。
主要解决在ajax中中文参数传递过程中,服务器接收到中文乱码的问题
Asp中用法JQuery的AJAX提交中文乱码解决方法_.docx
解决ajax异步提交后台取值中文乱码问题,提供两种解决方法