Unicode 和 UTF-8、UTF-16、UTF-32之间的关系
从ASCII码说起
我最早接触的编码体系就是ASCII码,在学习C语言的过程中,了解到了计算机的储存是通过‘0’和‘1’的排序。例如在ASCII码大写字母“A”所对应的二进制位“01000001”。而这通过二进制储存信息的过程就叫做 编码 。
ASCII ((American Standard Code for Information Interchange): 美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是最通用的信息交换标准,并等同于国际标准ISO/IEC 646。ASCII第一次以规范标准的类型发表是在1967年,最后一次更新则是在1986年,到目前为止共定义了128个字符 。
既然ASICC叫做美国信息交换标准代码,那么其设计的服务对象必定面向于美国。对于美国来说,128的储存量足以使用,但对于其他国家,显然远远不够。各国倘若都另起炉灶,设计自己的编码体系,又会导致各国之前信息相互转化产生不便。这时急需一个容量大、便于转化的编码体系。
Unicode的诞生
Unicode 为世界上所有字符都分配了一个唯一的数字编号,这个编号范围从 0x000000 到 0x10FFFF (十六进制),有 110 多万,每个字符都有一个唯一的 Unicode 编号。至少从目前的来看,Unicode能满足所有国家的需求。也正因如此,Unicode也被称为统一码、万国码、单一码。