SpringMVC使用Ajax请求返回中文乱码

使用@ResponseBody标记返回参数,当类型为String时,返回的中文可能会出现乱码问题;而当返回值是Map<String, Object>或者是其它类型时,并没有中文乱码的出现。

这可以说是spring mvc的一个bug,spring MVC有一系列HttpMessageConverter去处理用@ResponseBody注解的返回值,如返回list或其它则使用 MappingJacksonHttpMessageConverter,返回string,则使用 StringHttpMessageConverter,而这个convert使用的是字符集是iso-8859-1,而且是final的。所以在当返回json中有中文时会出现乱码。

解决办法:在RequestMapping中,加入produces={"text/html;charset=UTF-8;","application/json;"},完美解决

 

@RequestMapping(value = "***",produces={"text/html;charset=UTF-8;","application/json;"})  

 

 

 

 

posted @ 2018-08-07 17:51  lisy0808  阅读(162)  评论(0)    收藏  举报