系统梳理 unicode 与编码方式
编码标准的演进时间线
第一阶段:英语世界 (1960s)
- 主角:ASCII
第二阶段:多语言环境 (1980s)
- 主角:GB2312 (中国大陆), Big5 (台湾地区) 等
- 背景与原因:
- 计算机开始在全球普及,进入了非英语国家。亚洲语言(中、日、韩)拥有数以千计的字符,一个字节(最多 256 个字符)完全不够用。
- 当时还没有全球统一的解决方案,于是各个国家和地区开始自己动手,丰衣足食。
- 解决方案与时间线:
- 约 1980 年 -
GB2312
:中国大陆发布《信息交换用汉字编码字符集·基本集》,收录了约 6763 个简体汉字和 682 个符号。它采用双字节编码,规定一个小于 127 的字节是 ASCII 字符,两个大于 127 的字节组合在一起表示一个汉字。 - 约 1984 年 -
Big5
:由台湾五家大公司联合制定,主要用于繁体中文环境。它也是一个双字节编码方案,解决了当时台湾电脑上没有统一中文标准的问题。 - 这个时期的特点:各自为政。一个用
Big5
编码的文件,在只支持GB2312
的系统上打开,就会显示成一堆无意义的符号,这就是 乱码 的根源。这些编码互相不兼容,给国际信息交换带来了巨大的障碍。
- 约 1980 年 -
第三阶段:Unicode 标准的诞生 (1990s)
- 主角:Unicode标准
- 背景与原因:
- 互联网开始兴起,全球信息化的浪潮势不可挡。“乱码”问题成为了软件国际化的巨大痛点。
- 迫切需要一个统一的、涵盖全球所有字符的字符集,让每个字符都有一个全球唯一的“身份证号”。
- 解决方案:
Unicode
标准横空出世。它的目标不是成为另一种编码,而是创建一个字符集。它只规定字符的数字编号(码点 Code Point),例如“欢”的编号是U+6B22
,但它最初并没有强制规定这个编号应该如何在计算机中存储为二进制。- 它像一本巨大的字典,收录了所有文字,并不断扩充。
第四阶段:Unicode 的实现与发展 (1990s - 2000s)
Unicode
只是一个标准(字典),还需要具体的编码方案(存放规则)来落地。
总结
- 从简单到复杂:从只处理英文的
ASCII
开始。 - 从混乱到统一:经历了
GB2312
、Big5
等区域编码的“乱码时代”。 - 标准的诞生:
Unicode
提供了统一的“字典”,解决了“应该收录哪些字”的问题。 - 实现的多样性与优胜劣汰:
UTF-16
、UTF-8
等是实现Unicode
的具体方法。UTF-8
因其卓越的兼容性和效率,最终在互联网领域胜出。 - 国家标准的演进:中国的编码标准也从
GB2312
->GBK
->GB18030
一路发展,最终与国际标准Unicode
全面对齐。