编码之响应编码

编码之响应编码

编码

  常见字符编码:iso-8859-1(不支持中文)、gb2312、gbk、gb18030(系统默认编码,中国的国标码)、utf-8(万国码,支持全世界的编码,所以我们使用这个)

 

1. 响应编码

  * 当使用response.getWriter()来向客户端发送字符数据时,如果在之前没有设置编码,那么默认使用iso,因为iso不支持中文,一定乱码

  * 在使用response.getWriter()之前可以使用response.setCharaceterEncoding()来设置字符流的编码为gbk或utf-8,当然我们通常会选择utf-8。这样使用response.getWriter()发送的字符就是使用utf-8编码的。但还是会出现乱码!因为浏览器并不知道服务器发送过来的是什么编码的数据!这时浏览器会使用gbk来解码,所以乱码!

  * 在使用response.getWriter()之前可以使用response.setHeader("Content-type","text/html;charset=utf-8")来设置响应头,通知浏览器服务器这边使用的是utf-8编码,而且在调用setHeader()后,还会自动执行setCharacterEncding()方法。这样浏览器会使用utf-8解码,所以就不会乱码了!

  * setHeader("Content-Type", "text/html;charset=utf-8")的快捷方法是:setContentType("text/html;charset=utf-8)。

  最后我们需要把链接中的中文参数,使用url来编码!今天不行,因为html中不能给出java代码,但后面学了jsp就可以了。

编码之响应编码_第1张图片

什么是编码?

因为计算机中只能存放二进制的数字,那么我们使用的文字就需要编码来转化成数字,这样才能存到计算机内存当中。

常见字符编码

  1iso-8859-1(不支持中文,欧洲用的比较多)

  2gb2312, gbk, gb18030 (系统默认编码,中国的国标码)

  3utf-8(万国码,支持全世界的编码,所以我们用这个)

响应编码图解

字符:

         我们计算机的内存,硬盘存的数据都是以字节来存,字符只不过是数据的一种体现,字符是给人看的。

服务器(tomcat)响应客户端也是字节来传输数据的。

  • 服务器(tomcat)默认编码是iso-8859-1
  • 浏览器默认使用gbk来解码。

响应编码

  服务器向客户端发送数据,服务器的默认编码是iso-8859-1,而我们的客户端使用的默认编码是gbk来解码。

  本身iso-8859-1不支持中文,发送过去的乱码,那么我们浏览器用gbk来解码,更乱!!!

 

例如:服务器向客户端发送语句

   response.getWrite().prin("大家好"),那么服务器会用iso-8859-1把中文“大家好”,编码成自己,然后发送给客户端,而客户端会用gbk编码表来对这些字节进行解码,发现自己和编码表对不上,于是就报错啦。

编码之响应编码_第2张图片

设置编码:

  1response.setCharacterEncoding("uft-8"),response.getWriter();这个字符流,发送出去的字符都使用了utf-8

  2responses.setHeader("Content-Type","text/html;charset=utf-8");

  这个方法,不只是设置相应头,而且它会设置setCharacterEncoding(),即一名顶两句。

设置Content-Type头还有一个便捷方法:response.setContentType(text/html;charset=utf-8); à 我们使用这个

浏览器默认的编码是:gbk

服务器默认的编码是:iso

那么要想不乱码,就得两个地方设置的编码都是一样的才行。

想不乱:

 在使用getWriter()方法之前,先调用下面这个方法:

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

编码之响应编码_第3张图片

图解:请谨记这个图。

编码之响应编码_第4张图片

你可能感兴趣的:(javaWeb)