`
wenhai_zhang
  • 浏览: 181079 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

【转】jQuery Ajax提交表单乱码问题的解决

    博客分类:
  • java
 
阅读更多

【原文】http://m.oschina.net/blog/94095

 

        同事请求帮忙,说程序好好的,忽然就在提交表单的时候乱码了。本着助人为乐的精神,去看了一下。了解了一下情况后开始调试。 
发现请求提交到后台的时候中文已经变成了乱码。检查web.xml, 发现有编码转换的Filter, 检查页面,编码是UTF-8,检查request的编码,也是UTF-8,编码都是一致的。就是提交到后台的时候乱码。 
试着把取到的乱码进行转码,发现如下的情况可以正常获得中文:

new String(name.getBytes("iso-8850-1"), "utf-8")

接近崩溃的边缘了。再查Post到后台的数据,中文也是UTF-8的编码。

开始百度,有人说在jQuery中设置ajaxSettings的contentType属性,在后面加上”;charset=utf-8”

ajaxSettings: {
    url: ajaxLocation,
    isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
    global: true,
    type: "GET",
    contentType: "application/x-www-form-urlencoded;charset=utf-8",
    processData: true,
    async: true,
            ......
  }

试着改了之后,发现果然可以解决问题。

但是总觉得这么解决问题有点怪怪的,jQuery那么多人用,为啥非要指定这个utf-8的编码呢,如果项目用的不是utf-8呢? 
回到自己的位子继续研究。项目中用的是Spring的CharacterEncodingFilter, 懒得下源码,于是自己写了个EncodingFilter加在前面,发现request.getCharacterEncoding()返回的是null,于是手动设置了一下编码为utf-8, 再getParameter, 发现是正常的中文。

此处省去部分文字……

在javaEE的文档里,对于setCharacterEncoding的解释是这样的:

Overrides the name of the character encoding used in the body of this request. This method must be called prior to reading request parameters or reading input using getReader(). Otherwise, it has no effect.

最后发现是Filter的顺序问题导致。在encodingFilter之前配置了其他的Filter,刚好在那里调用了get方法,调整之后,一切恢复正常。

分享到:
评论

相关推荐

    jQuery Ajax过滤器

    用jQuery实现Ajaxform表单提交! 实现过滤乱码! 解决乱码!

    JQuery的Ajax中Post方法传递中文出现乱码的解决方法

    本文实例讲述了JQuery中Post传递中文出现的解决方法,即乱码ajax与jquery.ajax中文参数post传递乱码处理方法。分享给大家供大家参考。具体分析如下: 问题一: 今天在做项目时,需要用到Ajax,之前我在用GET方式传递...

    ajax实现excel报表导出

    利用ajax实现excel报表导出【解决乱码问题】,供大家参考,具体内容如下 背景 项目中遇到一个场景,要导出一个excel报表。由于需要token验证,所以不能用a标签;由于页面复杂,所以不能使用表单提交。初步考虑前端...

    cangkuguanli.zip

    7添加一个过滤器解决网页乱码问题 8给网站添加一个欢迎页面,吸引用户使用 备注: 1)项目中使用的技术: HTML, JavaScript, JSP, Servlet, JSTL, EL. Ajax。缺一不可 2)使用JDBC访问数据库,两种方式:基础代码,Dao...

    Java面试宝典2020修订版V1.0.1.doc

    7、简述ajax中Js脚本缓存问题该如何解决? 26 8、同步和异步怎么理解?分别在什么情况下使用。 26 9、java后台如何接收ajax数据? 26 10、为什么要有jquery? 26 11、jQuery选择器有多少种? 27 13、你是如何使用...

    Java学习笔记-个人整理的

    \contentsline {chapter}{Contents}{2}{section*.1} {1}Java基础}{17}{chapter.1} {1.1}基本语法}{17}{section.1.1} {1.2}数字表达方式}{17}{section.1.2} {1.3}补码}{19}{section.1.3} {1.3.1}总结}{23}{...

    文章管理系统

    1.[改进]去掉旧版AJAXRequest换成jQuery中的AJAX 2.[改进]为了系统安全和稳定去掉宇初验证码和印象码,加入4种数字验证码、1种中文验证码、1种计算题验证码供用户选择 3.[改进]为了后台系统安全,后台登录页不用判断...

Global site tag (gtag.js) - Google Analytics