response输出流数据到浏览器乱码问题

使用response对象设置响应体时有两个步骤:
1、获取输出流(字节流或字符流)
2、使用输出流,将数据输出到客户端浏览器

这时候如果传输的数据是中文,输出到浏览器就会 乱码
乱码原因:
首先,要知道乱码的根本原因是什么,乱码的根本原因在于 编码和解码使用的字符集不一样。那么在从服务器输出数据到客户端的过程中,有几次编码和解码过程?又分别是在哪里执行的?
       在输出数据的过程中,有 一次编码,是 tomcat执行的,它按照自己的字符集将数据编码后发送给客户端浏览器,有 一次解码,是 浏览器执行的,浏览器将接收的数据按照自己的字符集解码后打印在屏幕上。
tomcat的默认编码是ISO-8859-1浏览器的默认编码是操作系统的编码,也就是GBK,两者的编码格式不一样,就造成了中文乱码问题
解决方案:
解决方案不止一种,记录一种比较简单地
使用response设置响应头的方法来设置 Content-Type
具体操作
在获取输出流 之前(一定是之前)加上 response.setHeader("content-type","text/html;charset=utf-8"); 这个方法 不仅可以设置流的编码,还可以告诉浏览器发送数据的编码方式,并建议浏览器使用同样的字符集解码,这样就解决了乱码的问题
由于只需要设置content-type这个响应头,所以有另一个方法更为简单:
response.setContentType("text/html;charset=utf-8");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值