一.解决get请求中文乱码的方案:
方案(推荐)1:
一般情况下tomcat(8之前)服务器的编码默认是ISO8859-1,所以要对get请求提交的参数进行重新编码:
String userName = new String(request.getParamter("userName").getBytes("ISO8859-1"),"utf-8");
方案(不推荐)2:
既然知道了tomcat服务器的编码默认是ISO8859-1,那么可以修改tomcat的编码格式:在Tomact的conf/server.xml中添加URIEncoding=“utf-8” ,如下:
<Connector URIEncoding="utf-8" connectionTimeout="20000" port="8080"protocol="HTTP/1.1" redirectPort="8443"/>
二.解决post请求中文乱码的方案:
在项目中web.xml配置文件中加入如下配置可以解决中文乱码的问题:
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
-
而Post 则直接对request 对象设置编码格式为UTF-8 即可。相应的响应对象response 也可以设置编码格式为UTF-8。
request.setCharacterEncoding(“UTF-8”);
response.setCharacterEncoding(“UTF-8”);
- 注意:
此处要注意自己的tomcat服务器的版本,如果版本是8之前的版本,编码默认使用的是ISO8859-1,版本是8之后(包括8)编码默认使用的是utf-8,解决了url提交数据的编码问题;所以
tomcat(8之前的版本):使用如上过滤器(post)+get(转码)即可解决中文乱码的问题;
tomcat(8之后的版本):使用如上过滤器(post)即可解决中文乱码的问题;