中文乱码分为两种:
1.前端向后端发送的请求数据中的中文乱码;
2.后端向前端发送的请求数据中的中文乱码。
此篇博客介绍ssm项目(其他java web应用同样适用)中前端向后端发送的请求数据中的中文乱码如何处理。
第一步:
在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>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
第二步:
配置tomcat的安装目录中/conf/server.xml中的以下代码:
<!-- A "Connector" represents an endpoint by which requests are received
and responses are returned. Documentation at :
Java HTTP Connector: /docs/config/http.html (blocking & non-blocking)
Java AJP Connector: /docs/config/ajp.html
APR (HTTP/AJP) Connector: /docs/apr.html
Define a non-SSL HTTP/1.1 Connector on port 8080
-->
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
修改为(修改tomcat编码):
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" useBodyEncodingForURI="true" disableUploadTimeout="true" URIEncoding="UTF-8" />
以上两步缺一不可。