解决SpringMVC传输json数据时的乱码

解决SpringMVC传输json数据时的乱码:

遇到了一个编码问题。在使用前端Ajax向SpringMVC请求JSON数据,用来获得ztree的数据。返回的数据中有中文,当树渲染出来时,发现树的各个节点上全是”???”这样的。脑海中第一反应,数据乱码了。那么在地方乱的呢?前端和后端都是UTF-8的编码格式,会是什么地方出了问题呢?经过跟踪代码,发现SpringMVC在return之前获取的数据都是正常的中文,到Ajax请求得到的数据就乱了。也就是说,数据在Spring返回向前端的时候乱码了。

  
目前解决返回JSON乱码,我总共收集了两种方法来解决它: 


1、最简单,最快捷,也是最暴力的一种 
在方法的注解中加入 produces 属性
@RequestMapping(value
 = "/del", produces = {"application/json;charset=UTF-8"})
表示将功能处理方法将生产json格式的数据,此时根据请求头中的Accept进行匹配,如请求头“Accept:application/json”时即可匹配。
这种方法比较快捷、简单。但是如果用到的地方多,岂不是每个方法都要这么配置?所以需要更加好的解决方案,也就是我要说第二种方案


2、配置消息转换器的方式(建议采用这种方式来解决)
<!-- 设置对字符串的消息转换器 --><bean
id="stringHttpMessageConverter"class="org.springframework.http.converter.StringHttpMessageConverter"><property
name="supportedMediaTypes">
<list><value>text/plain;charset=UTF-8</value><value>application/json;charset=UTF-8</value>
</list></property></bean><!--
 避免IE执行AJAX时,返回JSON出现下载文件 --><!-- Jackson 是Spring
 自带的功能 -->

<bean        id="mappingJackson2HttpMessageConverter"class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">

    <property  name="supportedMediaTypes">

    <list>

         <value>application/json;charset=UTF-8</value>

        <value>application/xml;charset=UTF-8</value>

         <value>text/html;charset=UTF-8</value>

        <value>text/plain;charset=UTF-8</value>

        <value>text/xml;charset=UTF-8</value>

        <value>text/javascript;charset=UTF-8</value>

  </list>

 </property>

</bean>

    <mvc:annotation-driven>

<mvc:message-converters>

<ref   bean="stringHttpMessageConverter"/>

<ref bean="mappingJackson2HttpMessageConverter"/>

</mvc:message-converters></mvc:annotation-driven>


SpringMVC 是按照message-converters 里面配置的处理数据格式的,配置了2个消息转换器 Jackson 和 字符串 ,这2个消息转换器都是Spring自带的,个人感觉很方便。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值