Unicode编码与ASCII编码

众所周知,计算机是以二进制的形式存储数据的,它只认识由0和1组成的机器码而我们使用的编程语言不管是C语言也好Python也好,都是会转换成汇编语言,再转换成机器码,计算机才能识别。那么,文字与二进制之间有着怎样的对应关系呢?这之间的转换又有怎样的规范呢?

ASCII码

由于计算机诞生于美国,而早期的计算机使用者大多使用英文,上世纪60年代,美国制定了一套英文字符与二进制位的对应关系,称为ASCII码,沿用至今。

一个二进制位(Bit)有0、1两种状态,一个字节(Byte)有8个二进制位,有256种状态,每种状态对应一个符号,就是256个符号,从00000000到11111111

ASCII码规定了128个英文字符与二进制的对应关系,占用一个字节(实际上只占用了一个字节的后面7位,最前面1位统一规定为0)。
下面就是ASCII码表。
Unicode编码与ASCII编码

Unicode编码

随着计算机的流行,使用计算机的人越来越多,这个时候ASCII编码的问题就凸现出来了。

ASCII编码只占用1个字节,也就是说最多只能表示256个字符。那么数万汉字怎么表示?日语韩语拉丁语等等象形文字又该怎么表示?所以90年代又制定了一套新的规范,将全世界范围内的字符统一使用一种方式在计算机中表示,这就是Unicode编码(Unique Code)。

Unicode 是一个很大的集合,现在的规模可以容纳100多万个符号,每个符号的对应的二进制都不一样。Unicode 规定可以使用多个字节表示一个字符,例如 a 的编码为 01100001,一个字节就够了,”好“的编码为 01011001 01111101,需要两个字节。
完整的Unicode编码请查看:https://home.unicode.org/