一、Web应用的中文乱码原因
-
Tomcat默认使用字符集为ISO-8859-1,属于西欧字符集。
-
解决乱码的核心思路是将ISO-8859-1转换为UTF-8.
-
Controller中请求与相应都需要设置UTF-8字符集。
二、中文乱码的配置(一般来说项目中这三项都要配置)
1.Get请求乱码:Tomcat配置文件server.xml中增加URLEncoding属性,Tomcat8以后的版本默认增加并设置为utf-8,不用修改。
具体操作:
a,找到Tomcat安装包
b,找到conf目录:
c,找到server.xml 文件,并打开
d,在71行附近 添加编码格式设置URIEncoding="UTF-8"(注意:Tomcat8以后的版本,默认“URIEncoding”编码格式就是“UTF-8”无需修改)
2.Post请求乱码:项目文件web.xml配置CharacterEncodingFilter(过滤器)
代码为:(一整段完整复制到web.xml即可)
<filter>
<filter-name>characterFilter</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>characterFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
3.Response响应乱码:Spring配置StringHttpMessageConverter
在applicationContext.xml文件中添加StringHttpMessageConverte 对相应的文本进行处理
<mvc:annotation-driven >
<mvc:message-converters>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=utf-8</value>
</list>
</property>
</bean>
</mvc:message-converters>