为了账号安全,请及时绑定邮箱和手机立即绑定

spring responsebody 返回中文乱码

spring responsebody 返回中文乱码

大话西游666 2019-03-13 10:15:21
@RequestMapping(value = "getJSON", method = RequestMethod.GET,produces={"text/html;charset=UTF-8;","application/json;"} )    @ResponseBody    public String getJson(HttpServletRequest request,HttpServletResponse response){         response.setCharacterEncoding("UTF-8");                return "说到底";            }前台.ajax({       type: "GET",       url: "getJSON.do",       success: function(data){           console.log(data);                 }   网上说加produces=“ { }”   加了还是乱码。
查看完整描述

6 回答

?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

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


查看完整回答
反对 回复 2019-04-25
?
慕森王

TA贡献1777条经验 获得超3个赞

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

<mvc:message-converters>

的货


查看完整回答
反对 回复 2019-04-25
?
婷婷同学_

TA贡献1844条经验 获得超8个赞

spring mvc 添加 Jackson 支持


添加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");


查看完整回答
反对 回复 2019-04-25
?
LEATH

TA贡献1936条经验 获得超6个赞

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

查看完整回答
反对 回复 2019-04-25
?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

工程中用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默认的初始化配置


查看完整回答
反对 回复 2019-04-25
?
杨__羊羊

TA贡献1943条经验 获得超7个赞

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

查看完整回答
反对 回复 2019-04-25
  • 6 回答
  • 0 关注
  • 764 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号