SpringMVC@ResponseBody中文乱码

按照网上的提示,已经加上了produces="application/json;charset=utf-8"这样的内容了,如下图所示
clipboard.png
但是仍然在浏览器上访问这个网址中文仍然是乱码???
后来进入debug模式查询,发现response的charset还是ISO-8859:

clipboard.png
请问这是为什么呢,
然后直接在controller里强行将response的contentType设为utf-8编码也不行。请教一下大牛怎么解决啊、很紧急了。

阅读 8.7k
6 个回答

xml文件中加上这个就可以了
<mvc:annotation-driven>

    <mvc:message-converters register-defaults="true">
        <bean class="org.springframework.http.converter.StringHttpMessageConverter">
            <property name="supportedMediaTypes" value="text/html;charset=UTF-8"></property>
        </bean>
    </mvc:message-converters>
</mvc:annotation-driven>

不知道MediaType是啥,不过我一直是用produces = "application/json;charset=UTF-8"这个编码,还是说前台的编码不是utf-8

如果服务器是 Tomcat,则换到 8.0 以上版本。旧版本缺省情况下不是 UTF-8 编码。

配置一个 spring 的编码过滤器
随手搜的一个,供参考
如果是新项目去看看 spring boot 吧,基本不用怎么配置,像中文乱码这些都默认配好了。

按我的配置你试一下

说一下乱码问题 GET和POST
POST在web.xml文件中配置spring过滤器,使用servlet原始方法 但是这样JSON问题还是解决不了 如图可以解决
GET乱码tomcat7及以下在web.xml中配置URIencoding=utf-8 或者拿过来使用ISO-8859-1手动解码然后再用UTF-8编码

配置一个简单的CharacterFilter可能解决不了, 如果使用的是Jackson2,试试下面这种方案

<mvc:annotation-driven>
        <mvc:message-converters>
            <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                <property name="supportedMediaTypes">
                    <util:list>
                        <value>application/json;charset=UTF-8</value>
                        <value>text/html;charset=UTF-8</value>
                    </util:list>
                </property>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>

jackson1同理,只是类换成了MappingJacksonHttpMessageConverter

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题