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 class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" >
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />
</list>
</property>
</bean>
经过网上的查找,发现能够使用org.springframework.http.converter.StringHttpMessageConverter来进行charset的强制转换。
3. 问题的解决
在RequestMappingHandlerAdapter中添�StringHttpMessageConverter来进行信息的编码转换:
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" >
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<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下@ResponseBody响应中文内容乱码问题的更多相关文章
- Spring MVC @ResponseBody响应中文乱码
问题:在前端通过get请求服务端返回String类型的服务时,会出现中文乱码问题 原因:由于spring默认对String类型的返回的编码采用的是 StringHttpMessageConverter ...
- 解决Spring MVC @ResponseBody返回中文字符串乱码问题
spring mvc使用的默认处理字符串编码为ISO-8859-1 解决方法: 第一种方法: 对于需要返回字符串的方法添加注解,如下: @RequestMapping(value="/use ...
- Spring MVC @ResponseBody返回中文字符串乱码问题
朋友做小项目练手的时候遇到的,着实让他郁闷够呛..这个问题的确很恶心.. 项目中引用的json包,直接用@ResponseBody注解返回json字符串..有关这个的乱码问题网上很多,各种花样各种转码 ...
- Android项目,从web上取下汉字,中文部分乱码
Android项目,从web上取下汉字,中文部分乱码. 常见问题,搜索一下,网上有很多办法解决.如果还没有试过这个办法,可以尝试一下. BufferedReader in = new Buffered ...
- Mysql 导入CSV文件,中文内容乱码问题
项目中用到含有中文字段的数据CSV文件,导入Mysql数据中发现中文内容乱码. 分析原因:因为数据库字符编码问题引起. [1]创建utf-8字符集数据库 CREATE DATABASE db_name ...
- 使用jsp内置对象request获取表单提交中文内容乱码的解决办法
page1.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pag ...
- Java开发中使用模拟接口moco响应中文时乱码
场景 在开发中需要依赖一些接口,比如需要请求一个返回Json数据的接口,但是返回Json数据的接口要么是没搭建,要么是交互比较复杂. 此时,就可以使用moco来模拟接口返回接口数据,以便开发和测试工作 ...
- 解决IDEA springBoot读取*.properties文件中文内容乱码的问题
1. 配置 properties 文件 2. 读取 sex 属性输出到页面, 中文乱码 3. file --> settings 4. Editor --> File Encodings ...
- Spring MVC+MySQL保存中文变成乱码
环境:MySQL,Spring MVC3.2.0,jQuery v2.0.3,使用JdbcTemplate访问数据库,相当于全套Spring解决方案. 现象 直接使用表单POST,或者使用jQuery ...
随机推荐
- 如何在CentOS 7上修改主机名
如何在CentOS 7上修改主机名 在CentOS中,有三种定义的主机名:静态的(static),瞬态的(transient),和灵活的(pretty).“静态”主机名也称为内核主机名,是系统在启动时 ...
- cognos开发与部署报表到广西数据质量平台
1.cognos报表的部署. 参数制作的步骤: 1.先在cognos里面把做好的报表路径拷贝,然后再拷贝陈工给的报表路径. 开始做替换,把陈工给的报表路径头拿到做好的报表路径中,如下面的链接http: ...
- DELL磁盘阵列控制卡(RAID卡)MegaCli常用管理命令汇总
新版本的 MegaCli-1.01.24-0.i386.rpm (下载地址:http://www.lsi.com/downloads/Public/MegaRAID Common Files/8.02 ...
- ReactiveCocoa 简单使用
#pragma mark 指令 -(void) instructionDemo { // 创建使能信号 RACSignal * signal = [self.textField.rac_textSig ...
- NetBeans使用技巧记录
1.窗体字体大小设置: 在etc文件夹下的netbeans.conf中添加,12表示字体大小,12正合适. netbeans_default_options="--fontsize 12 - ...
- MFC 堆栈溢出 test dword ptr [eax],eax ; probe page.
今天调试程序的时候,发现一个奇怪的问题,之前调试都没问题的,今早加了一点东西,就出现错误,跳到调试位置,如下4行红色部分 ; Find next lower page and probe cs20: ...
- mysql window下tmpdir空间耗尽
修改my.ini或my-default.ini文件[mysqld]下方配置 tmpdir = D:/tmp
- InnoDB概览
InnoDB 采用了MVCC来支持高并发,并且实现了四个标准的隔离级别.其默认级别是REPEATABLE READ(可重复读) ,并且,通过间隙锁(next-key locking)策略防止幻读的出现 ...
- 2.1 Java I/O简史
Java 1.0 到 1.3 中的 IO 没有而 Java 1.4 中引入的 NIO 有的“改进”:非阻塞IO.缓冲区.通道层.字符集.内存数据.Perl(正则表达式之王): 下一代 I/O-NIO. ...
- HTML5 canvas中的路径方法
路径方法 fill() 填充当前绘图(路径) stroke() 绘制已定义的路径 begin ...