ajax的返回值一直乱码,

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

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


最后查资料发现,

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

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

publicclassStringHttpMessageConverterextendsAbstractHttpMessageConverter<String>{publicstaticfinalCharsetDEFAULT_CHARSET=Charset.forName("ISO-8859-1");


解决办法:


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

<beanclass="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"><propertyname="messageConverters"><list><beanclass="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"><propertyname="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-drivenvalidator="validator"/>注:配置必须在 <mvc:annotation-driven /> 之前,否则将不会启效;<mvc:annotation-driven /> 会自动注册DefaultAnnotationHandlerMapping 与AnnotationMethodHandlerAdapter。