spring 升级到4.3 后 @ResponseBody 注解返回值中文出现乱码
查看了org.springframework.http.converter.StringHttpMessageConverter DEFAULT_CHARSET 默认值变为了 iso-8859-1 之前是utf-8
但是DEFAULT_CHARSET 是final 类型的,不过作者也给出了改变输出值字符集的方法
解决方法 1:RequestMapping中加入produces属性指定 META值
@RequestMapping(value = "/test",produces={"text/html;charset=UTF-8"})
解决方法 2:配置文件中修改
annotation 驱动默认为:
<mvc:annotation-driven />
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<constructor-arg value="UTF-8" />
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
<mvc:annotation-driven /> 驱动配置有两个,后面的会把前面的覆盖,Debug进去多次发现编码总是“ISO-8859-1”,后来意识到如果配置文件不起作用很可能就是被冲掉了
然后将后面的默认驱动配置去掉,然后前面的就起作用了,这可能是好多人遇到按方法二配置不起作用的原因吧!这里再次提醒自己!!!!