ajax提交 返回中文乱码问题

来源:互联网 发布:软件企业商业模式 编辑:程序博客网 时间:2024/06/08 18:08

使用@RequestMapping返回中文乱码

首先: 确定的是(经过多次测试的结果)只有当返回值是 String时才会出现中文乱码,而当返回值是Map<String, Object>或者是其它类型时,并没有中文乱码的出现.原因: 原因是这可以说是springmvc的一个bug,springmvc有一系列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>  

参考博客