Spring MVC解决中文乱码问题
如果觉得写的还可以,点个赞支持一下笔者呗!你们的点赞和关注会让笔者更新更快哦!!笔者会持续更新关于Java和大数据有关的文章
Web应用的中文乱码由来
- Tomcat默认使用字符集ISO—8859—1,属于西欧字符集
- 解决乱码的核心思路是将ISO—8859—1转换为UTF—8
- Controller中请求与响应都需要设置UTF—8字符集
中文乱码的配置
Get请求乱码-server.xml增加URIEncoding属性
注意:Tomcat8.0以后的版本,可以不添加,默认就是utf-8
Post请求乱码-web.xml配置CharacterEncodingFilter
<filter><filter-name>characterFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><!--设置请求的编码param-name是固定的--><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>
Response响应乱码-Spring配置StringHttpMessageConverter
<mvc:annotation-driven><mvc:message-converters><beanclass="org.springframework.http.converter.StringHttpMessageConverter"><!-- <property name="supportedMediaTypes">名字固定 --><propertyname="supportedMediaTypes"><list><!-- response.setContentType("text/html;charset=utf-8") --><value>text/html;charset=utf-8</value></list></property></bean></mvc:message-converters></mvc:annotation-driven>
这里注意:
响应的如果是JSON字符串,那么需要配置关于JSON的响应字符集设置
<mvc:annotation-driven><mvc:message-converters><beanclass="org.springframework.http.converter.StringHttpMessageConverter"><propertyname="supportedMediaTypes"><list><!-- response.setContentType("text/html;charset=utf-8") --><value>text/html;charset=utf-8</value><value>application/json;charset=utf-8</value></list></property></bean></mvc:message-converters></mvc:annotation-driven>