SpringMVC乱码问题

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中解析字符串的转换器默认编码是ISO-8859-1  

  解决办法:

  方法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>
原文地址:https://www.cnblogs.com/guanghe/p/10429357.html