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");
发布了28 篇原创文章 · 获赞 1 · 访问量 2129

猜你喜欢

转载自blog.csdn.net/weixin_42387411/article/details/100528060