GBK标准入门介绍与学习总结

时间:2022-07-28
本文章向大家介绍GBK标准入门介绍与学习总结,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

[TOC]

0x00 基础介绍

中文字符标准编码: GBK,GB2312,GB18030

产生原因:

  • 空间占用 因为UTF-8是Unicode的一种实现,所以他包含了世界上的所有文字的编码,但是他采用的是1-4字节进行编码。 对于那些排在前面优先纳入的文字,可能就优先使用1字节、2字节存储了,对于后纳入的文字,就要使用3字节或者4字节存储了,所以UTF-8对存储空间要求就会很大。 对于常用的汉字在UTF-8中采用3字节进行编码,但是如果有一种只包含中文和ASCII的编码的话,就不需要使用3个字节可能2个字节就够了。
  • 一种编码基本都是只服务一个国家或者地区的,比如一个中国的网站,一般会出现简体字和繁体字以及一些英文字符,很少会出现日语或者韩文的

也是出于这样的考虑中国国家标准总局于1981年制定并实施了 GB 2312-80 编码,即中华人民共和国国家标准简体中文字符集。后来厂商微软利用GB2312-80未使用的编码空间,收录GB 13000.1-93全部字符制定了GBK编码。

有了标准中文字符集,如果是一个纯中文网站,就可以可以采用这种编码方式,这样可以大大节省一些存储空间的。

常用的中文编码有GBK(常用),GB2312,GB18030:

  • GB2312(1980年):16位字符集,收录有6763个简体汉字,682个符号,共7445个字符; 优点:适用于简体中文环境,属于中国国家标准,通行于大陆,新加坡等地也使用此编码; 缺点:不兼容繁体中文,其汉字集合过少。
  • GBK(1995年):16位字符集,收录有21003个汉字,883个符号,共21886个字符; 优点:适用于简繁中文共存的环境,为简体Windows所使用,向下完全兼容gb2312,向上支持 ISO-10646 国际标准 ;所有字符都可以一对一映射到unicode2.0上; 缺点:不属于官方标准,和big5之间需要转换;很多搜索引擎都不能很好地支持GBK汉字。
  • GB18030(2000年):32位字符集;收录了27484个汉字,同时收录了藏文、蒙文、维吾尔文等主要的少数民族文字。 优点:可以收录所有你能想到的文字和符号,属于中国最新的国家标准; 缺点:目前支持它的软件较少。

在Java中开发采用GBK编码中文字符默认占用2B,其中表现形式为-42 -48即第一个为负数(少数为特例)第二个为正数或者负数;

public static void main(String[] args) {
    //中文字符GBK码表
    System.out.println('中' + 0); //gbk码表一一对应
    System.out.println('文' + 0);
    //JAVA表现形式
    byte[] arr = "中文".getBytes();
    for (Byte b : arr) {
      System.out.print( b + " ");
    }
    //中 : -42 -48 
    //文 : -50 -60
  }