Java-jquery ajax IE下中文乱码

Java-jquery ajax IE下中文乱码

泛泛之交 发布于 2017-04-29 字数 763 浏览 1096 回复 4

JSP和服务都使用的UTF-8编码,设置了拦截器进行UTF-8转码,JSP中如果使用Form提交Action,不会出现乱码问题,但如果使用jQuery的ajax就会出现乱码,ajax如下:
/*
$.ajaxSetup({
contentType: "application/x-www-form-urlencoded; charset=utf-8"
});
*/
//specialty 中文内容
$.ajax({
type:'POST',
url:"${ctx}/DistributeAction.do?action=update&model=" + specialty,
dataType:"JSON",
// contentType: "application/x-www-form-urlencoded; charset=utf-8",
success:function(categotry) {
//Todo
}
});
注释掉的两个部分是想将其转码,但都不成功,乱码只在IE下出现,我用FireFox使用ajax中文不会乱码,网上查了下说是英文IE默认编码是IOS,中文IE是GBK,我的是中文,求帮忙解决,谢谢。

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

泛泛之交 2017-10-17 4 楼

我在项目是这样提交数据的,IE6,IE7,firefox,chrome都没有问题,不知道对你有没有帮呢?
$.ajax({
type:'POST',
url:"${ctx}/Distribute",
date:{"action":"update","model":specialty},
success:function(categotry) {
//Todo
}
});

瑾兮 2017-09-27 3 楼

我一直使用的是3楼的 方法2,就是,在ajax的 方法体里,将url编码。
例如

var url = encodeURI(encodeURI("${request.contextPath}/advertisementMgr/advertisement/findAdposAndadvertList.action?esPubAdvertisement.name=${esPubAdvertisement.name}&esPubAdvertisement.positionId=${esPubAdvertisement.positionId }"));

清晨说ぺ晚安 2017-07-13 2 楼

中文乱码主要出现在:请求头和接收编码不一致上。解决方案:

1.在接收方要设置头的编码,返回客户端时,也要对其机型编码。
2.在js发出数据时,要对中文内容进行encodeURI(),js获取数据时,要对其进行decode。
3.接收方的页面,也要对其进行utf-8编码的设置。

泛泛之交 2017-05-27 1 楼

ajax乱码的问题解决的方法有很多,随便说几个你试下:
方法1:
request.setCharsetEncoding("UTF-8");
方法2:发送前使用encodeURI(),去对中文编码下
获取的时候java.net.URIDecode.decode(str,"UTF-8");就可以得到正确的汉字。这个是对整个URL编码的,对其中的参数组建编码用encodeURIComponent()。