AJAX中文问题分为两大类:
1)发送路径中的参数有中文,在服务器段接收参数值是乱码
例如:
var url="index.jsp?name=活力宝贝";
xmlHTTP.open ("post",url,true);
解决办法:
利用javascript的提供的escape()或encodeURI()方法
例如:
客户端:
var url="index.jsp?name=活力宝贝";
url=encodeURI(url);
url=encodeURI(url); //两次,很关键[具体为什么,我也不清楚]
//或者 var url="a.jsp?name=escape("活力宝贝")"; 功能和encodeURI方法类似。
xmlHTTP.setrequestheader("cache-control","no-cache");
xmlHTTP.setrequestheader("Content-Type","application/x-www-form-urlencoded");
xmlHTTP.setrequestheader("contentType","text/html;charset=uft-8")//指定发送数据的编码格式
xmlHTTP.open ("post",url,true);
服务器端:
String name = request.getParameter("name");
name = java.net.URLDecoder.decode("name", "UTF-8");
2)返回来的responseText或responseXML的值中含有中文是乱码
原因: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");
总结:
1)ajax提交数据的格式默认为utf-8,利用javascript的提供的escape()或encodeURI()方法.在服务器端接收的时候要使用java.net.URLDecoder.decode("","UTF-8")方法进行解码.
2)xtmlhttp 返回的数据默认的字符编码是utf-8,所以服务器要向客户端发送数据的时候,也要采用utf-8编码.如果上述方法仍然解决不了乱码问题,那你尝试一下把jsp,htm,java文件用UTF-8编码格式保存.
总之:前后台数据交互都采用utf-8编码就行了.
------------------------------------------------------------------------------
加上设置字符编码的方法:
response.setHeader("charset","gb2312");
看到的说明原文如下:
用AJAX中采用get来读取页面时,responseText里面的中文多半会出现乱码,这是因为xmlhttp在处理返回的 responseText的时候,resposeBody默认采用utf-8编码,如果服务器送出的确实是utf-8的数据流的时候汉字会正确显示,而读取的页面编码是GBK或者GB2312时就会出现页面中文的乱码。
解决的办法有二:
1、在送出的流里面加一个header,指明送出的是具体编码流:
PHP:header('Content-Type:text/html;charset=GB2312');
ASP:Response.Charset("GB2312")
JSP:response.setHeader("Charset","GB2312");
2、采用utf-8编码来保存HTML文档
分享到:
相关推荐
ajax提交时,后台接收的参数出现中文乱码的解决方法,
Ajax使用POST提交中文乱码问题.docx
java认证_Ajax中文乱码问题及解决方法.doc
解决ajax异步提交后台取值中文乱码问题,提供两种解决方法
Asp中用法JQuery的AJAX提交中文乱码解决方法_.docx
今天终于解决了AJAX的中文乱码问题,写篇文章来帮助一下有同样问题的朋友们。我的开发环境:XP, eclipse,使用GB18030编码。 当遇到这个问题时,到网上去查了好多文章,提到几种解决方案,如:全站UTF-8编码;请求头...
该案例是一个ajax异步提交中文字符串的案例。该案例是一个ajax异步提交中文字符串的案例。该案例是一个ajax异步提交中文字符串的案例。
JQuery是一个非常优秀的框架,在特定场合下使用JQuery提交数据,相当的方便快捷。 但是,在处理一个GB2312编码的网站AJAX提交时,中文数据却成了乱码。
主要介绍了Asp中使用JQuery的AJAX提交中文乱码解决方法,使用Asp中的unescape() 和escape() 函数即可解决乱码问题,需要的朋友可以参考下
ajax提交表单,并对提交中文时的乱码进行处理.
ajax传输中文乱码问题描述: 我是在一个jsp页面有一个保存按钮,点击时会触发saveForm()的js函数,在saveForm()函数里经过校验后,会通过ajax发送数据请求,这样就不用通过提交表单来传输数据了,ajax估计就是...
在使用myeclipse过程中,我使用ajax同步请求传递参数到后台却出现中文乱码,这是我解决问题的代码,希望对您有所帮助
本文给大家分享jquery ajax submit提交中文乱码问题的解决办法,感兴趣的朋友跟着脚本之家的小编一起来学习吧
客户端是UTF-8编码,这也是现在大家公认的标准编码在这种情况下,实用AJAX异步获取GB2312编码的服务器端信息时,不可避免的要遇到汉字乱码问题
配置server。xml添加两行参数。tamcat配置使用ajax可以传中文参数不出乱码
引言: 在JQuery的Ajax POST请求中,进行请求,其中的中文在后台,显示为乱码,该如何解决呢? 问题的引入: 代码如下: var regid = $(‘#oregion’).combobox(‘getValue’); //var sname = $(‘#sname’).val(); ...
解决这个方向(servlet——javascript)的中文乱码问题很简单。只需要在 servlet中,添加一个 编码设置: 代码如下: response.setContentType(“text/html;charset=UTF-8”); 而且JSP页面编码方式可以随意设定,GBK...
NULL 博文链接:https://1601844782.iteye.com/blog/2275595