字符集和字符编码
字符集:字符的集合
字符编码:字符集中的字符映射到数字序列的方式
为什么计算机需要编码
- 磁盘使用凸起/凹陷存储数据
- 内存使用有电荷/无电荷
- 显示器不同颜色的二极管分别亮或灭
二进制是为了处理这些情况抽象出来的数学逻辑
字的编码
- 字形码: 屏幕上最终展示的字
- 机内码: 计算机内部存储的字符格式
字形码=机内码+字体, 换句话说, 机内码是对字形码的一种压缩
字符编码演化
ASCII
一个字节,最高位0,剩下7位表示127个字符,控制字符和英文数字字符
ISO-8859系列
ASCII+欧洲字符
Unicode
一套字符编码体系,涵盖抽象字符集、编号、逻辑编码、编码实现
可以容纳世界上所有国家的文字和符号,其编号范围是0-0x10FFFF,有1,114,112个码位,现已定义的码位有238,605个
UTF-16
Unicode最开始设计位双字节编码,固定16位表示一个字符,后来发现不够用,修改为变长编码,常用字符使用2字节,不常用字符使用4字节
UTF-8
UTF-8是变长编码,范围1-4字节
UTF-16不兼容ASCII,UTF-8兼容ASCII
GB系列
GB2312
双字节编码,两个大于 127 的字节连在一起来共同表示一个汉字
由__区位码__和__国标码__组成
可容纳字符数过少
GBK
国标扩展
双字节编码,字符数=2*GB2312
GB18030
强制性标准,现在在中国大陆销售的软件都支持
Unicode的一种实现,兼容GB系列,是GB2312、GBK的超集
参考资料