Spring mvc 使用ajax 请求返回中文乱码

controlller 代码:

    @RequestMapping(value = "/user/getUsers.do", method = RequestMethod.GET)
    @ResponseBody
    public String getUsers() {
        return userService.getUserList();
    }

js 代码:

$.ajax({
        type:'GET',
        url:'/user/getUsers.do',
        scriptCharset: 'utf-8',
        success: function (response) {
                alert(resoponse);
        }
});

在网上找了很久,也尝试修改了 tomcat 工程里的 server.xml 文件也无济于事,最后找到原因和解决办法。

原因:

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

解决方法:

方法一:在配置文件中的mvc:annotation-driven中添加如下代码:
    
      
      
        
          
        
      
   
方法二:在 RequestMapping 中加入 produces:
@RequestMapping(value = "***",produces={"text/html;charset=UTF-8;","application/json;"})  

参考文章:https://www.cnblogs.com/HDK2016/p/7257177.html

你可能感兴趣的:(Spring mvc 使用ajax 请求返回中文乱码)