设为首页 加入收藏

TOP

Spring下@ResponseBody响应中文内容乱码问题
2014-11-23 21:36:11 来源: 作者: 【 】 浏览:15
Tags:Spring @ResponseBody 响应 中文 内容 乱码 问题

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


1. 问题的提出


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


2. 分析问题


2.1 JQuery前端排除


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


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


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


2.2 后端Spring配置信息的分析


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









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


3. 问题的解决


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









text/plain;charset=UTF-8






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


4. 应用配置,问题解决


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


总结分析:


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


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Linux内核——定时器和时间管理 下一篇Python的数值类型

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: