ajax的返回值一直乱码,
试过各种ContentType设定utf-8的方法,就是搞不定,
而且明明返回值是json字符串,一直出现ajax取得返回值类型为object。
最后查资料发现,
SpringMVC使用@ResponseBody注解,返加字符串不做任何处理时,有可能会出现乱码问题。
这是由于 StringHttpMessageConverter 类中,默认采用的字符集是 ISO-8859-1。public class StringHttpMessageConverter extends AbstractHttpMessageConverter {
public static final Charset DEFAULT_CHARSET = Charset.forName("ISO-8859-1");
解决办法:
那么要解决乱码问题,需要改变StringHttpMessageConverter 中的默认字符集,本文中以UTF-8为例。
text/html;charset=UTF-8
text/plain;charset=UTF-8
application/json;charset=UTF-8
注:配置必须在 之前,否则将不会启效;会自动注册DefaultAnnotationHandlerMapping 与AnnotationMethodHandlerAdapter。