POST请求乱码

  原因分析:一般浏览器使用编码默认和操作系统保持一致,而中文操作系统一般默认为gbk,我们的服务为utf-8

  解决办法:在web.xm中配置编码过滤器



1 <filter>
2 <filter-name>encodingFilter</filter-name>
3 <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
4 <init-param>
5 <param-name>encoding</param-name>
6 <param-value>utf-8</param-value>
7 </init-param>
8 <init-param>
9 <param-name>forceEncoding</param-name>
10 <param-value>true</param-value>
11 </init-param>
12 </filter>
13 <filter-mapping>
14 <filter-name>encodingFilter</filter-name>
15 <url-pattern>/*</url-pattern>
16 </filter-mapping>


GET请求乱码

  原因分析:一般tomcat默认认为的url栏和页面使用的不是同一编码,其他服务器基本上解决了post乱码get乱码也就解决了。

  解决办法:在tomcat中server.xml中的port=“8080”的配置项中,加上一个 URIEncoding=”utf-8属性

返回乱码

  现象:浏览器请求某个使用@ResponseBody返回json的接口,返回json中有中文乱码。

SpringMVC乱码问题_spring

  原因分析:SpringMVC中解析字符串的转换器默认编码是ISO-8859-1  

SpringMVC乱码问题_mvc_02

  解决办法:

  方法1,在Controller中的@RequestMapping注解中配置 produces = "application/json; charset=utf-8",缺点是每个方法都要配。

  方法2,在Spring-MVC.xml中配置字符串转换器取代默认转换器



1 <!-- 处理请求返回json字符串的中文乱码问题 -->
2 <mvc:annotation-driven>
3 <mvc:message-converters register-defaults="true">
4 <!-- StringHttpMessageConverter编码为UTF-8,防止乱码 -->
5 <bean class="org.springframework.http.converter.StringHttpMessageConverter">
6 <constructor-arg value="UTF-8" />
7 <property name="supportedMediaTypes">
8 <list>
9 <bean class="org.springframework.http.MediaType">
10 <constructor-arg index="0" value="text" />
11 <constructor-arg index="1" value="plain" />
12 <constructor-arg index="2" value="UTF-8" />
13 </bean>
14 <bean class="org.springframework.http.MediaType">
15 <constructor-arg index="0" value="*" />
16 <constructor-arg index="1" value="*" />
17 <constructor-arg index="2" value="UTF-8" />
18 </bean>
19 </list>
20 </property>
21 </bean>
22 <!-- 避免IE执行AJAX时,返回JSON出现下载文件 -->
23 <bean id="fastJsonHttpMessageConverter"
24 class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
25 <property name="supportedMediaTypes">
26 <list>
27 <value>application/json;charset=UTF-8</value>
28 </list>
29 </property>
30 </bean>
31 </mvc:message-converters>
32 </mvc:annotation-driven>