jQuery Ajax提交表单乱码问题的解决
2012-12-05 16:36
246 查看
同事请求帮忙,说程序好好的,忽然就在提交表单的时候乱码了。本着助人为乐的精神,去看了一下。了解了一下情况后开始调试。
发现请求提交到后台的时候中文已经变成了乱码。检查web.xml, 发现有编码转换的Filter, 检查页面,编码是UTF-8,检查request的编码,也是UTF-8,编码都是一致的。就是提交到后台的时候乱码。
试着把取到的乱码进行转码,发现如下的情况可以正常获得中文:
接近崩溃的边缘了。再查Post到后台的数据,中文也是UTF-8的编码。
开始百度,有人说在jQuery中设置ajaxSettings的contentType属性,在后面加上”;charset=utf-8”
试着改了之后,发现果然可以解决问题。
但是总觉得这么解决问题有点怪怪的,jQuery那么多人用,为啥非要指定这个utf-8的编码呢,如果项目用的不是utf-8呢?
回到自己的位子继续研究。项目中用的是Spring的CharacterEncodingFilter, 懒得下源码,于是自己写了个EncodingFilter加在前面,发现request.getCharacterEncoding()返回的是null,于是手动设置了一下编码为utf-8, 再getParameter, 发现是正常的中文。
此处省去部分文字……
在javaEE的文档里,对于setCharacterEncoding的解释是这样的:
最后发现是Filter的顺序问题导致。在encodingFilter之前配置了其他的Filter,刚好在那里调用了get方法,调整之后,一切恢复正常。
发现请求提交到后台的时候中文已经变成了乱码。检查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”
<!-- lang: js --> 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.form.js进行表单提交,中文乱码问题及解决
- Spring MVC 3 表单中文提交后乱码问题的解决方法
- jQuery mobile,解决form表单提交的乱码问题
- 微信浏览器提交表单内汉字,服务器接收显示乱码问题的解决
- 解决struts2以GET方式提交表单中文乱码问题
- SSH项目笔记:表单提交字符串,MySQL存储乱码问题解决
- Ajax提交表单时的中文乱码问题的解决
- 解决表单提交参数乱码问题【终极版】不看后悔
- spring mvc 3.0 中解决post表单提交出现的中文乱码问题
- 解决JSP提交表单保存到Mysql中文乱码的问题
- 解决表单get提交乱码问题
- 解决表单提交参数乱码问题【终极版】不看后悔
- 回看JSP——解决提交form表单出现的乱码问题
- 解决ajax提交表单出现乱码的问题
- springmvc + freemarker 解决表单提交、页面显示乱码 的问题
- 解决表单提交参数乱码问题【终极版】不看后悔
- Spring MVC 解决form表单提交中文乱码问题
- JSP+Servlet学习经验1:解决form表单提交后相应页面中文乱码的问题
- Struts2提交表单中文乱码问题解决
- 表单中文数据提交到MySQL数据库乱码问题(已解决)