SpringMVC 返回JSON数据类型常常会中文乱码 之二
2015-05-26 08:49
661 查看
现在看来,上一次讨论这个话题的解决方案基本是治标不治本,没什么实际效用。现在的4.1.6版本就完全失效了。
新增两个解决方案:
1.重写StringHttpMessageConverter类,只要在spring源码中找到这个类的java文件,拷贝到工程下原样新建一个(原来的包路径,原来的类名称),利用java包覆盖机制,将引用库jar包中原来的类覆盖掉就可以。
在源码中将
替换为:
2.在spring配置文件中新建一个StringHttpMessageConverter供需要它对象引用,唯一注意的是要在构造函数中将UTF-8字符集传进去。网上关于这个似乎很多都是用字符串传进去的,貌似Charset无法用字符串直接构造对象,因此必须先构建出一个Charset给StringHttpMessageConverter的构造函数引用。配置xml片段如下:
上述两个途径都已实际验证过。参数了如下文档:/article/3509042.html
RestTemplate中文乱码的道理是一样的。
新增两个解决方案:
1.重写StringHttpMessageConverter类,只要在spring源码中找到这个类的java文件,拷贝到工程下原样新建一个(原来的包路径,原来的类名称),利用java包覆盖机制,将引用库jar包中原来的类覆盖掉就可以。
在源码中将
public static final Charset DEFAULT_CHARSET = Charset.forName("ISO-8859-1");
替换为:
public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8");
2.在spring配置文件中新建一个StringHttpMessageConverter供需要它对象引用,唯一注意的是要在构造函数中将UTF-8字符集传进去。网上关于这个似乎很多都是用字符串传进去的,貌似Charset无法用字符串直接构造对象,因此必须先构建出一个Charset给StringHttpMessageConverter的构造函数引用。配置xml片段如下:
<bean name="utf8Charset" class="java.nio.charset.Charset" factory-method="forName" > <constructor-arg value="UTF-8" ></constructor-arg> </bean> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <constructor-arg ref="utf8Charset"> </constructor-arg> <property name="supportedMediaTypes"> <list> <value>text/plain;charset=UTF-8</value> <value>text/html;charset=UTF-8</value> <value>text/json;charset=UTF-8</value> <value>application/x-www-form-urlencoded;charset=UTF-8</value> </list> </property> </bean> <!-- 默认的注解映射的支持 --> <mvc:annotation-driven > <mvc:message-converters> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <constructor-arg ref="utf8Charset"> </constructor-arg> <property name="supportedMediaTypes"> <list> <value>text/plain;charset=UTF-8</value> <value>text/html;charset=UTF-8</value> <value>text/json;charset=UTF-8</value> <value>application/x-www-form-urlencoded;charset=UTF-8</value> </list> </property> </bean> </mvc:message-converters> </mvc:annotation-driven>
上述两个途径都已实际验证过。参数了如下文档:/article/3509042.html
RestTemplate中文乱码的道理是一样的。
相关文章推荐
- springMVC返回json数据时,字符串中文乱码
- 解决springmvc返回json数据IE出现文件下载和json数据中文乱码问题
- SpringMVC返回json数据+解决中文乱码
- 用springmvc作接口时返回json数据中文乱码
- SpringMVC中ACTION返回JSON数据中文乱码
- SSM 后台返回数据给前台,json中文乱码解决方法
- springmvc出现返回json数据类型的错误
- springmvc解决ajax返回json数据乱码问题
- Spring MVC Controller中返回json数据中文乱码处理
- springmvc ajax返回数据中文乱码
- SpringMVC 3.1下返回json时中文显示乱码问题的解决方案
- SpringMVC 使用@ResponseBody返回json 中文乱码
- 解决springmvc使用@ResponseBody返回String类型字符串中文乱码问题
- SpringMVC中在使用@ResponseBody时如何将Date类型的日期返回指定格式的json数据
- SpringMVC返回json数据时乱码解决
- SpringMVC 使用@ResponseBody返回json 中文乱码
- 通过url地址获取数据后将数据利用SpringMVC的@ResponseBody返回中文可能出现乱码地方
- SpringMVC的@ResponseBody返回JSON,中文乱码问题的解决.
- Django学习问题——解决返回JSON数据时中文出现乱码
- SpringMVC(28):json数据的中文乱码-解决与示例