spring4 使用@ResponseBody 返回中文时发现客户端乱码

来源:互联网
更新时间:2017/1/23 6:21:04
责任编辑:王亮
字体:

在使用spring4 使用@ResponseBody 返回中文时发现客户端乱码,奇怪了,已经在web.xml中配置了过滤器

配置如下:

?<filter>

? ? ? ? <description>字符集过滤器</description>

? ? ? ? <filter-name>encodingFilter</filter-name>

? ? ? ? <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

? ? ? ? <init-param>

? ? ? ? ? ? <description>字符集编码</description>

? ? ? ? ? ? <param-name>encoding</param-name>

? ? ? ? ? ? <param-value>UTF-8</param-value>

? ? ? ? ? ??

? ? ? ? ? ? <param-name>forceEncoding</param-name>

? ? ? ? ? ? <param-value>true</param-value>

? ? ? ? </init-param>

? ? </filter>

? ? <filter-mapping>

? ? ? ? <filter-name>encodingFilter</filter-name>

? ? ? ? <url-pattern>/*</url-pattern>

? ? </filter-mapping>

?

后来经过查资料发现?@RequestMapping 中添加?produces 配置?

配置如下

@RequestMapping(value="user/reg.do",method =RequestMethod.POST,produces={"application/json;charset=UTF-8"})

返回的中文不乱码了。

?

charset=UTF-8:设置字符集为utf-8

@RequestMapping(value = "/user/reg.do", produces = "application/xml"):表示将功能处理方法将生产xml格式的数据,此时根据请求头中的Accept进行匹配,如请求头“Accept:application/xml”时即可匹配。

?

此种方式相对使用@RequestMapping的“headers = "Accept=application/json"”更能表明你的目的。

?

当你有如下Accept头:

①Accept:text/html,application/xml,application/json

将按照如下顺序进行produces的匹配 ①text/html ②application/xml ③application/json

②Accept:application/xml;q=0.5,application/json;q=0.9,text/html

将按照如下顺序进行produces的匹配 ①text/html ②application/json ③application/xml

q参数为媒体类型的质量因子,越大则优先权越高(从0到1)

③Accept:*/*,text/*,text/html

将按照如下顺序进行produces的匹配 ①text/html ②text/* ③*/*

?

即匹配规则为:最明确的优先匹配。

?

?

2.当使用 response 返回json字符串时,中文又乱码了。

代码:

result = mapper.writeValueAsString(resReslt);

pt = response.getWriter();

?

pt.write(result);

?

修改代码后:

?

response.setHeader("Content-type", "text/html;charset=UTF-8"); ?

//这句话的意思,是告诉servlet用UTF-8转码,而不是用默认的ISO8859 ?

response.setCharacterEncoding("UTF-8"); ?

pt = response.getWriter();

?

pt.write(result);

?

设置报文头和字符集后,中文就不乱码了。

?

?

?

?

www.xue163.com true /3960/39607411.html report 3074 spring4使用@ResponseBody返回中文时发现客户端乱码,在使用spring4使用@ResponseBody返回中文时发现客户端乱码,奇怪了,已经在web.xml中配置了过滤器配置如下:?<filter>????<description>字符集过滤器</description&...
最近关注
首页推荐
热门图片
最新添加资讯
24小时热门资讯
精彩资讯
精彩推荐
热点推荐
真视界
精彩图片
社区精粹
关于本站 | 广告服务 | 手机版 | 商务合作 | 免责申明 | 招聘信息 | 联系我们
Copyright © 2004-2016 Xue163.com All Rights Reserved. 学网 版权所有
京ICP备10044368号-1 京公网安备11010802011102号
荐闻 | 学网头条知识问答 | 装修 | 作业 | 荐闻 | 学网头条精彩微信 | 新闻中心 | 软件教室 | 设计大全 | 网络相关 | 英语学习 | 开发编程 | 考试中心 | 参考范文 | 管理文库 | 营销中心 | 站长之家 | IT信息中心 | 商学院 | 数码大全 | 硬件DIY | 企业服务 | 网吧在线 | 问吧 | 百科 | 硬件知识 | 本网视点 | 文库 | 手机 | 平板 | 汽车 | 游戏 | 家电 | 精彩摄影 | 时尚科技 | 现代家居 | IT女人 | 经验 | 每日新闻 | 健康养生 | 图书馆 | 猎奇 | 精彩看点 | 图库 | 新闻中心 | 软件教室 | 设计大全 | 网络相关 | 英语学习 | 开发编程 | 考试中心 | 参考范文 | 管理文库 | 营销中心 | 站长之家 | IT信息中心 | 商学院 | 数码大全 | 硬件DIY | 企业服务 | 网吧在线 | 问吧 | 百科 | 硬件知识 | 本网视点 | 文库 | 手机 | 平板 | 汽车 | 游戏 | 家电 | 精彩摄影 | 时尚科技 | 现代家居 | IT女人 | 经验 | 每日新闻 | 健康养生 | 图书馆 | 精彩微信 | 猎奇 | 精彩看点 | 图库编程 方案 信息windows方案windows answer文档机构教育文档问答中心IT编程数码信息解决方案信息中心IT科技