jquery ajax IE下中文乱码

来源:互联网 发布:淘宝店授权店 编辑:程序博客网 时间:2024/05/18 00:23

jquery ajax IE下中文乱码

  • LT_刚

    0 票

  • LT_刚
    221

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,我的是中文,求帮忙解决,谢谢。

评论 (0) • 分享 • 链接 • 2012-08-29 
4个答案
票 数 
  • 社区维基

    1 票

  • CoderMark
    1

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

评论 (0) • 链接 • 2012-08-29
  • dutao

    1 票

  • dutao
    239

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

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

评论 (0) • 链接 • 2012-08-30
  • 李小蔚

    0 票

  • 李小蔚
    3425

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

评论 (0) • 链接 • 2012-08-30
  • Janson

    0 票

  • Janson
    11

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

  1. var url = encodeURI(encodeURI("${request.contextPath}/advertisementMgr/advertisement/findAdposAndadvertList.action?esPubAdvertisement.name=${esPubAdvertisement.name}&esPubAdvertisement.positionId=${esPubAdvertisement.positionId }"));
评论 (2) • 链接 • 2012-12-04
  • 0
    这是编两次码? – 白若水 2012-12-05
  • 0
    对,前台编码两次,后台decode一次。 – Janson 2012-12-05