Response中文乱码问题

简述

  我们用response使用输出流输出中文数据到浏览器,常常会发生乱码

乱码原因

  浏览器使用的字符集默认就是我们的操作系统字符集,window中文就是gbk

  我们使用输出流输出的数据就是一种编码的过程,输出流对象是从response获取出来的,源头上就是tomcat获取出来的

  那tomcat是谁写的,反正不是中国人,获取的输出流编码是ISO-8859-1

  那么编码解码字符集不同,即产生了乱码

  总的来说,有关response的乱码是由于默认输出ISO-8859-1的字符集编码,浏览器又默认用gbk解码(windows下),就乱码了。所以服务器就有必要告诉浏览器用什么字符集来解码。

乱码的解决

  既然你默认用gbk,那么我们用GBK来输出就没有乱码了

  我们可以设置获取的输出流的编码,在获取流之前使用如下代码,设置为gbk即可

response.setCharacterEncoding("GBK");

  但其实这是治标不治本,你如果不知道浏览器的解码字符集,就无法解决乱码了

  所以我们可以在响应消息里的响应头:content-type里告诉浏览器你应该使用什么解码字符集(我用utf8输出,告诉你你要用utf8解码)

//设置获取的流的字符集
response.setCharacterEncoding("utf-8");
//告诉浏览器你应该用什么解码字符集解码
response.setHeader("content-type","text/html;charset=utf-8");    

  reponse对象提供了一种简单的形式设置编码

response.setContentType("text/html;charset=utf-8");

   

一点一点积累,一点一点蜕变!
原文地址:https://www.cnblogs.com/qq2210446939/p/14827816.html