本人解决乱码问题主要依赖于下面的两篇文章:
深入分析 Java 中的中文编码问题
jQuery调用AJAX时Get和post公用的乱码解决方法实例说明
- Get请求编码可以通过tomcat的配置来解决。
- Post请求可以通过过滤器中的request.setCharacterEncoding()来设置。如果实在还有乱码问题:可以看看第二篇文章,检查浏览器的http header,查看contentType字段,如下:
contentType:”application/x-www-form-urlencoded” ,
则修改jQuery-1.x.x.js文件,将
contentType:”application/x-www-form-urlencoded”改为下面的代码
contentType:”application/x-www-form-urlencoded;charset=UTF-8” ,大概有两处地方需要这么修改。
虽然encodeURIComponent能解决问题,但是在每个输入框都加上这些代码,比较麻烦。尽量用能解决全局问题的方法来处理会比较好。
URIEncoding和useBodyEncodingForURI区别是,
URIEncoding是对所有GET方式的请求的数据进行统一的重新编码,
而useBodyEncodingForURI的意思是:请求参数的编码方式要采用请求体的编码方式。有两种设置方式:filter的request.setCharacterEncoding(‘UTF-8’)或者请求header中的content-type中的编码都是针对请求体的。
不同的页面可以有不同的重新编码的编码。
post请求中的参数属于请求体中的参数。
encodeURIComponent() 函数:将转义用于分隔 URI 各个部分的标点符号。它是 某些字符将被十六进制的转义序列进行替换。比如参数:“hello?world”中的“?”会被转义。