Spring下@ResponseBody响应中文内容乱码问题

引言:在JQuery的Ajax请求中,收到的基于后台返回回来的结果出现乱码,在后台其内容正确,到了前台之后,确是乱码??????,该如何解决呢?

1.  问题的提出

前端基于JQuery的Ajax进行页面请求,但是收到的响应信息中的中文确是乱码;后台使用了基于Spring的@ResponseBody来对响应结果进行了封装。

2. 分析问题

2.1  JQuery前端排除

基于查看,JQuery的前端Ajax请求默认的都是基于UTF-8的请求,指定与否不影响结果信息。

如果坚持要加,在前端javaScript代码中加入:

contentType: "application/x-www-form-urlencoded; charset=utf-8",

2.2 后端Spring配置信息的分析

后端使用了如下配置来进行JacksonMapping信息的映射:

<bean >   
    <property>   
        <list> 
          <bean />
        </list> 
    </property>   
</bean>   

经过网上的查找,发现可以使用org.springframework.http.converter.StringHttpMessageConverter来进行charset的强制转换。

3. 问题的解决

在RequestMappingHandlerAdapter中加入StringHttpMessageConverter来进行信息的编码转换:

<bean >   
        <property>   
        <list> 
          <bean /> 
          <bean> 
                <property> 
                    <list> 
                        <value>text/plain;charset=UTF-8</value> 
                    </list> 
                </property> 
            </bean> 
        </list> 
    </property>   
  </bean>

经过分析,可以看到其实就是在其中加入了一个基于String信息的MessageConverter,将其转换为UTF-8.

4.  应用配置,问题解决

修改配置信息,重启系统,然后就可以在系统中看到正常的页面显示信息了。

总结分析:

spring从3.0开始提供一个HttpMessageConverter<T>接口,这个接口相当有用,spring可以针对Http报文头的ContentType来调用该类的默认实现类将请求和响应进行相应的转换。用户可以基于这个接口实现对Request和Response的精细化控制和管理。

Spring中如何配置Hibernate事务

Struts2整合Spring方法及原理

基于 Spring 设计并实现 RESTful Web Services

Spring-3.2.4 + Quartz-2.2.0集成实例

使用 Spring 进行单元测试

运用Spring注解实现Netty服务器端UDP应用程序

Spring 3.x 企业应用开发实战 PDF完整高清扫描版+源代码

Spring 的详细介绍请点这里
Spring 的下载地址请点这里

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/b3a77fc6d993109dee8bee3300c8ff40.html