SpringMVC 学习-返回字符串中文乱码问题解决
一、使用 SpringMVC 框架时,如果 HTTP 请求资源返回的是中文字符串,则会出现乱码。原因如下:
SpringMVC 框架可以使用 @RequestBody 和 @ResponseBody 两个注解,分别完成请求到对象和对象到响应的转换,底层这种灵活的响应机制,就是Spring3.X 新引入的 HttpMessageConverter 即消息转换器机制。该机制默认的编码为 ISO-8859-1。
源码如下:
public class StringHttpMessageConverter extends AbstractHttpMessageConverter<String> {
public static final Charset DEFAULT_CHARSET = Charset.forName("ISO-8859-1");
二、那这种情况该怎么解决呢
经本人测试有效的解决办法,有如下两个:
1. 在 @RequestMapping 里面加入 produces="text/html;charset=UTF-8"
@ResponseBody
@RequestMapping(value="/logon",produces="text/html; charset=UTF-8")
public String logon(){
}
这种方式的不足之处在于,我们的每个 controller 都需要这么配置,算是比较麻烦。
那还有其他省事的、一劳永逸的办法吗?有的。
2. 使用 Spring 的后置处理器 BeanPostProcessor
对这个类不太了解的,见:http://www.cnblogs.com/libra0920/p/6118157.html 有一个简单的说明。
在 bean 实例化之后,当 bean 的类型为 StringHttpMessageConverter 时,设置 @responseBody 返回数据编码为 utf8 格式。
/**
* 实例化之后进行处理
*/
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
if(bean instanceof StringHttpMessageConverter){
MediaType mediaType = new MediaType("text", "plain", Charset.forName("UTF-8"));
List<MediaType> types = new ArrayList<MediaType>();
types.add(mediaType);
((StringHttpMessageConverter) bean).setSupportedMediaTypes(types);
}
return bean;
}
以上。
摆脱乱码困扰。
SpringMVC 学习-返回字符串中文乱码问题解决的更多相关文章
- SpringMVC3的ResponseBody返回字符串(JSON)乱码问题解决
近日做一个小项目,用spring mvc 做到ajax请求获取jquery ztree 异步获取树返回json对象时出现了乱码,试了各种办法,查了各种资料,一开始以为是数据库的编码有问题,经测试没问题 ...
- python3乱码问题:接口返回数据中文乱码问题解决
昨天测试接口出现有一个接口中文乱码问题,现象: 1 浏览器请求返回显示正常 2 用代码请求接口返回数据中文显示乱码 3 使用的python3,python3默认unicode编码,中文都是可以正常显示 ...
- Spring MVC3返回JSON数据中文乱码问题解决(转)
Spring MVC3返回JSON数据中文乱码问题解决 查了下网上的一些资料,感觉比较复杂,这里,我这几使用两种很简单的办法解决了中文乱码问题. Spring版本:3.2.2.RELEASE Jack ...
- SpringMvc Controller请求链接忽略大小写(包含拦截器)及@ResponseBody返回String中文乱码处理
SpringMvc Controller请求链接忽略大小写(包含拦截器)及@ResponseBody返回String中文乱码处理... @RequestMapping(value = "/t ...
- SpringMvc返回@ResponseBody中文乱码
使用SpringMvc的@ResponseBody返回指定数据的类型做为http体向外输出,在浏览器里返回的内容里有中文,会出现乱码,项目的编码.tomcat编码等都已设置成utf-8,如下返回的是一 ...
- 解决springmvc使用ResponseBody注解返回json中文乱码问题
spring版本:4.2.5.RELEASE 查看“org.springframework.http.converter.StringHttpMessageConverter”源码,中有一段说明: B ...
- 【转】asp.net Cookie值中文乱码问题解决方法
来源:脚本之家.百度空间.网易博客 http://www.jb51.net/article/34055.htm http://hi.baidu.com/honfei http://tianminqia ...
- LoadRunner中文乱码问题解决方法
LoadRunner中文乱码问题解决方法 前段时间在录制,增强,整合LoadRunner脚本,期间两次遇到了中文乱码问题.在此记录一下中文乱码问题的解决办法. 一.录制回放中文乱码 我录制登陆的脚本, ...
- soapUI参数中文乱码问题解决方法&soap UI工具进行web接口测试
soapUI参数中文乱码问题解决方法 可能方案1: 字体不支持中文,将字体修改即可: file-preferences-editor settings-select font 修改字体,改成能显示中文 ...
随机推荐
- 《Django By Example》第六章 中文 翻译 (个人学习,渣翻)
书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:无他,祝大家年会都中奖!) 第六章 ...
- 【摘录】使用实体框架、Dapper和Chain的仓储模式实现策略
以下文章摘录来自InfoQ,是一篇不错的软问,大家细细的品味 关键要点: Dapper这类微ORM(Micro-ORM)虽然提供了最好的性能,但也需要去做最多的工作. 在无需复杂对象图时,Chain这 ...
- Malware Defender(HIPS主动防御软件) V2.8 免费版
软件名称: Malware Defender(HIPS主动防御软件) V2.8 免费版 软件语言: 简体中文 授权方式: 免费软件 运行环境: Win7 / Vista / Win2003 / Win ...
- 自己封装的tc
封装弹窗 html <head> <script src="jquery.js"></script> <script src=" ...
- js便利json 数组的方法
这篇文章主要介绍了JQuery遍历json数组的3种方法,本文分别给出了使用each.for遍历json的方法,其中for又分成两种形式,需要的朋友可以参考下 $(function () { var ...
- RockMongo 安装
1. yum install php-pecl-http php 2. yum install httpd 3. yum install php-devel 4. pecl install mongo ...
- 获取Java的32位MD5实现
获取Java的32位MD5实现 public static String md5(String s) { char hexDigits[] = {'0','1','2','3','4','5','6' ...
- css-ie6下实现最小,最大宽度
_width: expression((document.documentElement.clientWidth||document.body.clientWidth)<1040?"1 ...
- dev Gridcontrol单元格值格式化及在模板中调用命令
<dxg:GridColumn> <dxg:GridColumn.EditSettings> ...
- dplyr 数据操作 常用函数(2)
继上一节常用函数,继续了解其他函数 1.desc() 这个函数和SQL中的排序用法是一样的,表示对数据进行倒序排序. 接下来我们看些例子. a=sample(20,50,rep=T)a desc(a) ...