SpringMVC返回中文乱码问题解决

793 阅读1分钟

SpringMVC返回中文乱码问题解决

1、遇到的问题

在web.xml文件中对乱码问题进行了配置,配置代码如下:

 <filter>
     <filter-name>encodingFilter</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>encodingFilter</filter-name>
     <url-pattern>/*</url-pattern>
 </filter-mapping>

这是网上大多数的解决办法,看了狂神说的视频,期间也遇到了这个问题,弄了很多种解决办法,最后也是通过配置web.xml这段代码解决的。

本次项目也是按照狂神说的SSM教程搭建的,但返回的中文却是乱码的,就很解。

2、解决办法

遇到问题就得积极解决,抱怨是没得用的。

于是就找了很多种方法,下面把有效的两种办法记录一下,其他没用的就不贴了。

2.1 @RequestMapping中添加produces参数

第一种办法就是再每个接口里面写上produces="text/json;charset=utf-8"这段代码,但是会暴露出两个问题。

  • 一是接口很多,那也太麻烦了吧,还会导致代码不雅观。
  • 二是这只是text/json这一种情况,还可以会有text/plain;,text/html;等情况,那岂不是更乱...

2.2 在Spring-mvc.xml配置文件统一处理

第二种办法相比于第一种方法来说,会好很多,暂时还没有遇到其他的问题,不敢说是最好的解决办法。

这种办法是在<mvc:annotation-driven/>中添加如下内容:

 <mvc:message-converters>
     <bean class="org.springframework.http.converter.StringHttpMessageConverter">
         <property name="supportedMediaTypes">
             <list>
                 <value>application/json;charset=UTF-8</value>
                 <value>text/plain;charset=UTF-8</value>
                 <value>text/html;charset=UTF-8</value>
                 <value>text/json;charset=UTF-8</value>
             </list>
         </property>
     </bean>
 </mvc:message-converters>

虽然也需要列举所有存在的可能情况,但是它不需要在每个接口都写一遍,维护起来也很方便。

还有什么更好的解决办法请各位大佬在评论留言指出!如有不对的地方,欢迎批评指正!