带你读《全景揭秘字符编码》之九:九、常见字符编码3:GB系列(5) https://developer.aliyun.com/article/1240898?groupCode=tech_library
9.4、GB18030
随着计算机的发展,GBK的2万多个字符也还是扛不住。
于是2000年我国又制定了新标准 GB18030,用来替代 GBK 标准。GB18030是强制性标准,现在在中国大陆销售的软件都支持 GB18030。
GB18030其实是对齐Unicode标准的,里面包括了所有Unicode字符集,也算是Unicode的一种实现(UTF)。
那既然有了UTF我们为什么还要搞一套Unicode实现?
主要是UTF-8/UCS-2他们是不兼容GB2312的,如果直接升级那么就全乱码了,所以GB18030是为了兼容GB系列,是GBK、GB2312的超集,当我们原先的GB2312(GBK)软件考虑升级到国际化Unicode时,可以直接使用GB18030进行升级。
GB18030虽然也是GB2312的扩展,但它和GBK的扩展方式不一样,GBK主要是充分利用了GB2312的一些没定义的编码空间,而GB18030采用的是字节变长编码,单字节区兼容ASCII、双字节区兼容GBK、四字节区对齐所有Unicode 码位。
实现原理上主要是采用第二字节未使用到的0x30~0x39编码空间来判断是否四字节。
具体就是:
- 1)单字节,其值从0到0x7F。
- 2) 双字节,第一个字节的值从0x81到0xFE,第二个字节的值从0x40到0xFE(不包括0x7F)。
- 3)四字节,第一个字节的值从0x81到0xFE,第二个字节的值从0x30到0x39,第三个字节的值从0x81到0xFE,第四个字节的值从0x30到0x39。