SpringMVC4.* @ResponseBody 中文乱码无法解决

来源:互联网 发布:淘宝商城卖家出售 编辑:程序博客网 时间:2024/06/05 14:02

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>

注:方法2 尝试了多次不起作用,后来发现犯了低级错误我的配置如下


<mvc:annotation-driven /> 驱动配置有两个,后面的会把前面的覆盖,Debug进去多次发现编码总是“ISO-8859-1”,后来意识到如果配置文件不起作用很可能就是被冲掉了

然后将后面的默认驱动配置去掉,然后前面的就起作用了,这可能是好多人遇到按方法二配置不起作用的原因吧!这里再次提醒自己!!!!






阅读全文
1 0