美文网首页
Spring mvc 使用ajax 请求返回中文乱码

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

作者: PerfectStranger | 来源:发表于2018-01-24 22:55 被阅读0次

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中添加如下代码:
  <mvc:annotation-driven >  
    <!-- 消息转换器 -->  
    <mvc:message-converters register-defaults="true">  
      <bean class="org.springframework.http.converter.StringHttpMessageConverter">  
        <property name="supportedMediaTypes" value="text/html;charset=UTF-8"/>  
      </bean>  
    </mvc:message-converters>  
  </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 请求返回中文乱码

      本文链接:https://www.haomeiwen.com/subject/jjppaxtx.html