字符编码基础

ASCII

ASCII(American Standard Code for Information Interchange),也称 ANSI

  • 每个字符都对应唯一的一个数字,比如字符 A 对应的二进制数值是 01000001,对应的十进制就是65
  • 最开始 ASCII 只定义了128个字符编码,包括96个文字和32个控制符号

EASCII ,在 ASCII 基础上的扩展(由原来的 7 位扩充到 8 位),它完全兼容 ASCII,额外包括表格符号、计算符号、希腊字母和特殊拉丁符号

GBK

GB2312 编码,又称 GB0,1981由中国国家标准总局发布

共收录了 6763 个汉字(兼容 ASCII 编码),满足了汉字的计算机处理需要(覆盖中国大陆99.75%的使用频率),但依然缺少一些罕见字

GBK 编码,在 GB2312 编码的基础上拓展。收录了 27484 个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字(兼容 ASCII 编码)。对于英文字符用1个字节来表示,汉字用两个字节来标识

Unicode

万国码,由统一联盟国际组织提出

Unicode 有两种格式:UCS-2 和 UCS-4

  • UCS-2 是 16 bit 位,最多可以表示65536个字符(存在局限性)
  • UCS-4 是 32 bit 位,理论上完全可以涵盖一切语言所用的符号
  • UCS-4 实际上只用了 31 bit 位,最高位必须为 0

Unicode 编码包含了各个国家所需符号与二进制位之间的映射

Unicode 只是规定如何编码,并没有规定如何传输、保存这个编码

Unicode 编码有不同的实现方式,比如:UTF-8、UTF-16等。其中 UTF-8是 Unicode 的一种流行的存储实现方式,可根据不同的符号而变化字节长度,起到了节省空间的左右

UTF-8 在表示英文字符时,和 ASCII 一样只需要一个字节的空间

参考

阮一峰的网络日志-字符编码笔记:ASCII,Unicode 和 UTF-8
PYTHON编码的前世今生

往年同期文章