SpringMVC的@ResponseBody注解可以将请求方法返回的对象直接转换成JSON对象,但是当返回值是String的时候,中文会乱码 原因是因为其中字符串转换和对象转换用的是两个转换器,而String的转换器中固定了转换编码为"ISO-8859-1" 网上也很多种解决方法,有通过配置Bean编码的,也有自己重写转换器的,我这里多次尝试未果,只能自己解决。 有两种解决办法: 1.返回字符串时,将字符串结果转换
return new String("你好".getBytes(), "ISO-8859-1"); 2.添加@RequestMapping注解,配置produces的值 @RequestMapping(value = "/add", produces = {"application/json;charset=UTF-8"}) ======================================================
后来,第二种方法也不行了,鼓捣半天,解决如下:
<property name="messageConverters"> <list> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <constructor-arg> <value>UTF-8</value> </constructor-arg> </bean> </list> </property>
即,给StringHttpMessageConverter指定字符串即可。 在controller里直接返回字符串即可,就走这个转换器了。
|