ajax返回数据中文乱码(为什么利用AJAX传回来的值是乱码)

本文目录
- 为什么利用AJAX传回来的值是乱码
- ajax,struts1.3乱码问题
- 在asp中,ajax接受的是乱码怎么办,var b =xmlHttpRequest.responseText;
- jquery插件中时间插件出现中文乱码怎么办
- 为什么Form表单提交不是乱码,而ajax提交会是乱码
- 如何解决JQuery ajaxSubmit提交中文乱码
- jquery ie6 ajax乱码问题
为什么利用AJAX传回来的值是乱码
这是由于客户端请求与服务器端相应编码不一致。
1.在你的页面上,你需要指定页面的编码,如:
***隐藏网址***
2.在你的服务器端也要指定输出编码,如:
response.charset = "utf-8";
3.你的前端页面和后台处理的页面字符编码必须同样为utf-8。
这样一般就不会乱码了,如果还乱,那么你就用escape()将请求进行编码后再发送,而后台也使用unescape()将请求进行解码后再处理就可以了。
输出时候的中文呢?在Action里面。
如果是html页面:
response.setContentType("text/html") ;
response.setCharacterEncoding("utf8") ;//这句会对输出字符进行设置
如果是xml,把text/html改成text/xml就OK了!
注:个人认为
response.setContentType("text/html; charset=UTF-8");
这方法不太保险,ContentType属性是针对页面的,如果是在当前页面输出就可以。但跳转或者传输数据的话会出问题!
ajax,struts1.3乱码问题
你的这个乱码是因为你使用了POST造成的,如果你的 data中含有中文字符的话,需要用JS把你的URI转码 :
data=encodeURI(data);
data=encodeURI(data);
XMLHttpReq.setrequestheader("cache-control", "no-cache");
XMLHttpReq.setrequestheader("content-type", "application/x-www-form-urlencoded");
据说需要两次。
另外,在服务端还要进行转码。
String uname=java.net.URLDecoder.decode(request.getParameter("uname"),"UTF-8");
楼主先试试这些方法吧,我以前也遇到过这个问题,困惑了好久,但是最后还是解决了。
我就是用的这个方法,祝你成功!
在asp中,ajax接受的是乱码怎么办,var b =xmlHttpRequest.responseText;
ajax 默认的编码方式是UTF-8 中文乱码是常出现的问题。你可以在进行参数传送的时候先用javascript 的encodeURIComponent 函数对编码进行处理 进行编码处理。
jquery插件中时间插件出现中文乱码怎么办
把jquery插件文件编码格式改变一下,应该跟你项目的编码不一致
修改编码
都为UTF或者GBK插件格式改为UTF-8
1、使用$.ajax出现的中文乱码的解决方案:
var _realname = $("input").val();
var termcourseId = ’《%=termid%》’;
var classId = ’《%=classid%》’;
var url = "/addressbook/studentListNoPage.do";
//var dataUrl = "formMap.TERMCOURSE_ID="+termcourseId+"&formMap.CLASS_ID="+classId+"&formMap.IS_ONLINE=all&formMap.REALNAME="+_realname;
$.ajax({
type: "POST",
url: url,
dataType:"json",
data: {
"formMap.TERMCOURSE_ID":termcourseId,
"formMap.CLASS_ID":classId,
"formMap.IS_ONLINE":"all",
"formMap.REALNAME":encodeURI(_realname)
},
contentType: "application/x-www-form-urlencoded; charset=utf-8",
success: function(data){
data = eval(data);
var html = "";
$("#allUnselectedUser").html(html);
},
error : function(XMLHttpRequest, textStatus, errorThrown){
alert(textStatus);
}
});
其中当使用dataUrl中的&方式提交时,无论前台是使用encodeURI或者encodeURIComponent又或者escape把中文转码,提交到Action中都是乱码,并不是想要的%e6%b1%89%e5%ad%97这种转后编码。即使加上contentType也不行。
把dataUrl中的&方式提交修改为data:{name:value}的方式提交即可。
在Action中使用URLDecoder.decode(realname,
"UTF-8")来转码即可转换为中文了。使用UTF-8是因为Jquery的提交方式默认为UTF-8,即使把contentType中的charset修改其他,例如GBK,后台也把UTF-8修改GBK,都不能正确转换。
为什么Form表单提交不是乱码,而ajax提交会是乱码
form表单提交就不说了,ajax提交表单:
JavaScript code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var data = $("#myForm").serialize();
//实际上serialize()方法会将中文编码一次,提交时再用encodeURI方法将data再编码一次:
$.ajax({
async : false,
type : "post",
dataType : "json",
url : url + "&" + encodeURI(data),
contentType : "application/x-www-form-urlencoded; charset=utf-8",
success : function(result) {
reflashTable(result);
},
error : function(XMLHttpResponse) {
alert("出错了。");
}
});
服务器端:
Java code
?
1
2
3
4
5
6
7
public void setPlayername(String playername) {
try {
this.playername = playername == null ? null : java.net.URLDecoder.decode(playername.trim(), "UTF-8");
} catch (UnsupportedEncodingException e) {
System.out.println("setPlayername decode utf-8 Error!");
}
}
没错这样是能够正常显示的。
可我就搞不明白了,serialize()之后的值实际上与java.net.URLEncoder.encode()的值是相等的,如果不进行第2次编码,那么tomcat在接收时decode一次后理应是正确的值,为什么就成乱码了呢?而为什么使用form表单提交却不用encode服务器也能正确接收?
按上面应该是可以的,我没去试试。
var data = $("#form").serialize();
这个只是把Form值取出来而以,如:playerid=1234&age=20&nickname=Hello&realname=1233中国
我就自己修改了data的值,编码一下:
data = encodes(data,"nickname,realname");
/** encodes方法 */
function encodes(data, names) {
names = names.split(",");
for (var i=0; i《names.length; i++) {
if (names != null) {
var start = data.indexOf(names);
var endStr = data.substring(start);
var end = endStr.indexOf("&");
if (end == -1)
end = endStr.length;
var mid=endStr.indexOf("=")+1;
var value=endStr.substring(mid, end);
//var nameValue = endStr.substring(0, end);
var nameValue = names + "=" + value;
nameValue = encodeURI(nameValue);
data = data.substring(0,start)+nameValue+endStr.substring(end);
} else {
alert(names + "为空");
}
}
return data;
}
这样也已经把问题解决了。其实这些是JQuery 早就帮我们做好了吧。。。。。
如何解决JQuery ajaxSubmit提交中文乱码
JQuery ajaxSubmit提交中文乱码解决方法:
设置contentType: "application/x-www-form-urlencoded; charset=utf-8",进行编码设置;
原因:1.检查页面显示编码和文件的编码;
2.查看传输过程中是否编码改变
JQuery的AJAX提交,会将要提交的数据进行编码,使用encodeURIComponent在js中处理数据。因此,无论是 Firefox或者IE,提交的数据都是一致的,都是UTF-8编码后的数据。
备注:编码类的问题检查主要方面有:页面设置显示编码,文件编码,浏览器编码等
jquery ie6 ajax乱码问题
如果前端页面是content="text/html; charset=gb2312"
那么输出内容的页面加上response.ContentType="text/html;charset=gb2312"
不管设置返回的是html还是json什么的

更多文章:
全球新冠肺炎疫情背景下航运发展(盐田港复苏日志:半年历劫从“低谷”到“爆仓” 疫情之后巨轮如何越洋航行)
2026年9月7日 17:10
matlab求解带字母参数方程组(我想matlab求一个关于x,y的方程组 ab c d f e h m n 都是参数)
2026年9月7日 16:30
oracle中的循环语句(下面哪个不是oracle程序设计中的循环语句 a for)
2026年9月7日 15:30
电脑里2个系统怎么删除一个(电脑开机显示有两个系统,如何删除一个)
2026年9月7日 12:20
scrollthrough意思(“scroll”是什么意思)
2026年9月7日 08:00
怎么激活keygen(注册机如何激活cad2008一个简单激活cad2008的方法)
2026年9月7日 06:30



