首页  >  问答  >  正文

java - spring responsebody 返回中文乱码

迷茫迷茫2720 天前686

全部回复(6)我来回复

  • PHP中文网

    PHP中文网2017-04-18 10:08:55

    还得看你的web容器是什么编码啊... 踩着踩着也就过去了.

    回复
    0
  • 迷茫

    迷茫2017-04-18 10:08:55

    对spring-mvc对编码适配器做编码支持,没记错是标签名为:

    <mvc:message-converters>

    的货

    回复
    0
  • PHPz

    PHPz2017-04-18 10:08:55

    1. spring mvc 添加 Jackson 支持

    2. 添加spring mvc 配置

    <mvc:annotation-driven>
        <mvc:message-converters>
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                <constructor-arg name="defaultCharset" value="UTF-8"/>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>

    或者 重写 StringHttpMessageConverter

    /* 将 */ public static final Charset DEFAULT_CHARSET = Charset.forName("ISO-8859-1");
    /* 改 */ public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8");

    回复
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 10:08:55

    用其他的抓包工具测试你的返回结果是否是utf-8的中文。
    问题往往出现在源头或者最后一步。
    如果是在页面乱码上你的JSP页面没有设置 charset "UTF-8"。
    浏览器console里面乱码的话,用F12 网络 看看响应头Content-Type = text/html,Encoding之类的。
    这些环节没有问题,那大概就是String 环境设置的问题,前面回答很值得参考。

    回复
    0
  • 大家讲道理

    大家讲道理2017-04-18 10:08:55

    工程中用springmvc返回json格式时,中文乱码了,看了一下springmvc源码发现 StringHttpMessageConverter 这个类的默认编码为ISO-8859-1(悲剧,springmvc这么大的东西怎么不用utf-8,搞不懂)

    下面是解决方法,

    springmvc 的配置文件:

    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" >
            <property name="messageConverters">   
                <list>   
                    <bean class = "org.springframework.http.converter.StringHttpMessageConverter">   
                        <property name = "supportedMediaTypes">
                            <list>
                                <value>text/html;charset=UTF-8</value>   
                            </list>   
                        </property>   
                    </bean>   
                </list>   
            </property>  
        </bean>
        <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> 
            <property name="messageConverters"> 
                <list>  
                    <bean class="org.springframework.http.converter.StringHttpMessageConverter"> 
                        <property name="supportedMediaTypes"> 
                            <list> 
                                <value>text/html; charset=utf-8</value> 
                            </list> 
                        </property> 
                    </bean>
                </list>  
            </property> 
        </bean>
        <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping">   
            <property name="interceptors">  
                <list>     
                </list>  
            </property>  
        </bean>  
    

    使用这个配置要把springmvc这个<mvc:annotation-driven /> 删掉,不要用springmvc默认的初始化配置

    回复
    0
  • PHP中文网

    PHP中文网2017-04-18 10:08:55

    加没加CharacterEncodingFilter?没加的话加上试试看
    如果不行:
    用的哪个版本的spirng,哪个版本的tomcat?
    以及:
    哪有楼上这些说的这么复杂。。。一片一片的xml看着就烦。。。

    回复
    0
  • 取消回复