编码格式
编码格式
基本知识:
- 计算机中最小单元为 一个字节 【1 byte = 8 bit】 0~(2^8 - 1)
字符集
定义:多个字符的集合;
常见的字符集:
- ASCII字符集
- GB2312字符集
- BIG5字符集
- GB18030字符集
- Unicode字符集
字符集发展过程
- ASCII码 【美国,英文字母、标点符号、阿拉伯数字】
- Latin-1 【欧洲,加入希腊字母】
- GB2312 【中国,加入汉字】
- GBK 【加入生僻字,繁体字和日韩汉字】
- Unicode 【ISO国际标准化组织一统江湖】
- 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】 |