编码格式

编码格式

基本知识:

  • 计算机中最小单元为 一个字节 【1 byte = 8 bit】 0~(2^8 - 1)

字符集

定义:多个字符的集合;

常见的字符集:

  1. ASCII字符集
  2. GB2312字符集
  3. BIG5字符集
  4. GB18030字符集
  5. Unicode字符集

字符集发展过程

  1. ASCII码 【美国,英文字母、标点符号、阿拉伯数字】
  2. Latin-1 【欧洲,加入希腊字母】
  3. GB2312 【中国,加入汉字】
  4. GBK 【加入生僻字,繁体字和日韩汉字】
  5. Unicode 【ISO国际标准化组织一统江湖】
  6. UTF-8 【再编码】

ASCII码字符集

全称:美国信息交换标准码,实现方式与字符集同名

  • 只用了一个字节的后 7 bit【第一位0】,所以只有 128 种字符【32个不可打印字符】
  • 二进制表示

GB2312字符集

实现方式与字符集同名

  • 分区表示: GB2312 中对所收汉字进行了“分区”处理,每区含有 94 个汉字/符号。这种表示方式也称为区位码
  • 双字节表示: 两个字节中前面的字节为第一字节,后面的字节为第二字节。习惯上称第一字节为高字节 ,而称第二字节为低字节

GBK字符集

实现方式与字符集同名

  • 是 GB2312 的扩展
  • 向上兼容,使用 GB2312 编码的可以使用 GBK 解码

Unicode字符集

全称: 统一的字符编码标准

  • Unicode 只是一个符号集,它只规定了符号对应的二进制代码,却没有规定这个二进制代码应该如何存储。

  • Unicode 是一本字典,他不是一次性定义的,是分区定义的,每个区可以存 2^16 字符【65536】,把它称之为一个平面(plane)

    目前有2^5 平面【17

    • BMP【基本平面】:0 ~ 2^16 - 1 ,(U+0000 到 U+FFFF)
    • SMP【辅助平面】:剩下的字符,(U+010000 到 U+10FFFF)
  • Unicode 有多种实现方式:

    • UTF-8 【变长 1 ~ 4 字节】
    • UTF-16 【两个 或 四个 字节】
    • UTF-32 【四个字节】

UTF-8

全称:Unicode 转换格式 8-bit

  • utf8是 Unicode 的一种实现方式
  • utf-8是一种变长的编码方式,使用 1 ~ 4 个字节表示一个字符
  • 如果一个字节的第一位是0,则这个字节单独就是一个字符;如果第一位是1,则连续有多少个1,就表示当前字符占用多少个字节

UTF-16

  • 基本平面的字符占用 2 个字节,辅助平面的字符占用 4 个字节
  • 当我们遇到两个字节,发现它的码点在 U+D800 到 U+DBFF 之间,就可以断定,紧跟在后面的两个字节的码点,应该在 U+DC00 到 U+DFFF 之间,这四个字节必须放在一起解读。

UTF-32

四个字节实现 Unicode

总结

主要字符集 字符集实现方式 备注
ASCII ASCII 美国定义的,主要包含英文字母、数字等,128个字符【第一位没用】,32个不可打印字符
GB2312 GB2312 中国定义,加入汉字
GBK GBK 兼容GB2312
Unicode UTF-8/UTF-16/UTF-32 UTF-8变长【1~4】、UTF-16【2或4】、UTF-32【4】