ajax返回值 json 乱码 解决方案

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ajax返回值 json 乱码 解决方案相关的知识,希望对你有一定的参考价值。

ajax的返回值一直乱码,

试过各种ContentType设定utf-8的方法,就是搞不定,

而且明明返回值是json字符串,一直出现ajax取得返回值类型为object。


最后查资料发现,

SpringMVC使用 @ResponseBody注解,返加字符串不做任何处理时,有可能会出现乱码问题。

这是由于 StringHttpMessageConverter 类中,默认采用的字符集是 ISO-8859-1。

public class StringHttpMessageConverter extends AbstractHttpMessageConverter<String> {   

        public static final Charset DEFAULT_CHARSET = Charset.forName("ISO-8859-1");


解决办法:


    那么要解决乱码问题,需要改变 StringHttpMessageConverter 中的默认字符集,本文中以UTF-8为例。

   

    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
        <property name="messageConverters">
            <list>
                <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                    <property name="supportedMediaTypes">
                        <list>
                            <value>text/html;charset=UTF-8</value>
                            <value>text/plain;charset=UTF-8</value>
                            <value>application/json;charset=UTF-8</value>
                        </list>
                    </property>
                </bean>
            </list>
        </property>
    </bean>
    
    <!-- mvc:annotation-driven/-->
    <mvc:annotation-driven validator="validator"/>
注:配置必须在 <mvc:annotation-driven /> 之前,否则将不会启效;<mvc:annotation-driven /> 会自动注册DefaultAnnotationHandlerMapping 与AnnotationMethodHandlerAdapter。


以上是关于ajax返回值 json 乱码 解决方案的主要内容,如果未能解决你的问题,请参考以下文章

(java)jsp页面ajax发出请求返回json格式数据 中文乱码问题

springmvc,通过ajax方式提交页面数据,后台返回json数据中文信息乱码

chrome 开发者工具中中文乱码,ajax请求返回的json串也不能自动格式化了,详见截图,求告知怎么设置...

ajax 中文乱码

Java中 用ajax发出请求返回JOSN格式数据,中文乱码问题

SpringMVC 返回 json 字符串中文乱码