A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 西安Java组 于 2018-2-8 13:04 编辑

一、首先,我们得弄清楚response乱码具体是指什么?

response乱码是指:服务器向浏览器发送的响应数据中存在中文,浏览器显示数据时中文乱码。

request乱码是指:浏览器向服务器提交的请求参数中存在中文,服务器接收到中文数据时乱码。

其实,不管是request和response乱码,都是由于服务器和浏览器(客户端)两方使用的字符集编码不一致导致。

二、解决乱码的方法:
①、服务器向浏览器响应数据有两种方式:字节流和字符流,所以要解决中文乱码问题就需要分类处理:
a)        使用字节流向浏览器响应数据


这个时候产生乱码的原因是:中文转成字节数组时使用的是系统默认的字符集,可能和浏览器打开时采用的字符集不一致,那么就会有乱码的可能。
要解决这类乱码问题,只需要将服务器中文转成字节数组时采用的字符集和浏览器默认打开时的字符集一致即可,如:


b)        使用字符流向浏览器响应数据


产生乱码的原因:字符流是有缓冲区的,response的设计默认的缓冲区的的字符集是ISO-8859-1,不支持中文。
解的方式是:设置缓冲区的字符集和浏览器默认打开时的字符集一致即可。


简单些,可以写作:


②、浏览器向服务器提交数据时,根据请求方式的不同,中文乱码的处理也不尽相同。下面我们来分类说明:
a)、POST请求
产生乱码的原因:POST方式提交的数据是在请求体中,request对象接收到数据之后,放入request缓冲区,而request缓冲区的默认字符集是ISO-8859-1,不支持中文。
解决的办法是:修改request缓冲区的字符集。

b)、GET请求
产生乱码的原因:GET请求时参数直接写在地址栏,那么浏览器就会对这组数据进行依次URL编码。
解决的办法是:将存储到request缓冲区的中文数据先以ISO-8859-1的字符集获取,然后进行UTF-8方式解码








1 个回复

倒序浏览
谢谢老师分享
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马