SSM 后台返回数据给前台,json中文乱码解决方法

场景:

 在实际运用场景中,当前台发起请求后,我们需要从后台返回数据给前台,这时,如果返回的数据中包含中文,则经常会出现在后台查询出来都是好好,但是传输回去就莫名的乱码了,而且,我们明明已经在 web.xml 中进行编码过滤了,但还是乱码,让人很头疼。


解决办法:

 第一种:这种方法,估计很多人都知道,那就在 controller 中的每个方法的  @RequestMappering 注解中进行编码设置,如下所示:

 

[java]  view plain  copy
  1. @RequestMapping(value = "/queryUserById",produces = "text/plain;charset=utf-8")  
 这种方法可以解决返回乱码问题,但是存在一个问题就是:需要在每一个的方法中都要写上 produces = "text/plain;charset=utf-8"

这句设置,这样无形中,让我们的代码看起来,有那么一些不美观,作为一个慵懒的程序猿,也不会允许我们一直在重复做写这代码,

所以有了第二种方法。


第二种:与第一种方法相比,这种方法只需要在 spring-mvc.xml 配置文件中配置一次就好,省去了我们重复写的麻烦,配置内容如下:

[html]  view plain  copy
  1. <!--自定义消息转换器的编码,解决后台传输json回前台时,中文乱码问题-->  
  2.     <mvc:annotation-driven >  
  3.         <mvc:message-converters register-defaults="true">  
  4.             <bean class="org.springframework.http.converter.StringHttpMessageConverter" >  
  5.                 <property name = "supportedMediaTypes">  
  6.                     <list>  
  7.                         <value>application/json;charset=utf-8</value>  
  8.                         <value>text/html;charset=utf-8</value>  
  9.                         <!-- application 可以在任意 form 表单里面 enctype 属性默认找到 -->  
  10.                         <value>application/x-www-form-urlencoded</value>  
  11.                     </list>  
  12.                 </property>  
  13.             </bean>  
  14.             <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" ></bean>  
  15.         </mvc:message-converters>  
  16.     </mvc:annotation-driven>  

加上这段配置,保存重新运行,再次访问,会发现,原先的中文乱码都已经正常显示了。


还有:

 response.setContentType("text/html;charset=utf-8"); //如果是json数据,需要设置为("text/javascript;charset=utf-8");

 response.setcharEncoding("utf-8");


猜你喜欢

转载自blog.csdn.net/yw_1207/article/details/80736091