Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说字符集和编码「终于解决」,希望能够帮助你!!!。
众所周知电脑内部采用二进制编码,因为它易于用电子电路实现。所有字符(包括字母、数字、符号、控制码等)在电脑内部都是用二进制表示的,字符集(Character Set)的二进制编码被称为字符编码(Character Encoding),有时人们也会混用这两个术语。
1963 年发布的 American Standard Code for Information Interchange(ASCII)是最早出现的字符编码,它用 7 位(bit)表示了 27= 128个字符,
美国人发明了电脑,英语被优先考虑是很自然的事情。随着电脑技术的传播,人们呼吁把字符编码扩充到 8 位也就是一个字节(byte),于是国际标准化组织(International Organization for Standardization,ISO)推出了 ISO 8859。28= 256个字符显然也不能满足需要,所以 8859 被分为十几个部分,从 8859-1(西欧语言)、8859-2(中欧语言),直到8859-16(东南欧语言),覆盖了大部分使用拉丁字母的语言文字。只能勉强覆盖英文字符。
在 ISO 标准完全定型之前,IBM 就有一系列自己的字符编码,他们称之为代码页(Code Page),其中著名的有 1981 年就被用于 IBM PC 的437(扩展 ASCII)、850(西欧语言)、852(东欧语言)。IBM 代码页通常被用于控制台(Console)环境,也就是 MS-DOS 或 Unix Shell 那样的命令行环境。
微软将 IBM 代码页称为 OEM 代码页,自己定义的称为 ANSI 代码页,后者中著名的有1252(西欧语言)、1250(东欧语言)、936(GBK简体中文)、950(Big5 繁体中文)、932(SJIS 日文)、949(EUC-KR韩文)等。
1981 年,中国大陆推出了第一个自己的字符集标准 GB2312,它是一个 94 ∗ 94 的表,包括 7445 个字符(含 6763 个汉字)。GB2312 通常采用双字节的EUC-CN编码,所以后者也常常被称为 GB2312 编码;其实 GB2312还有另一种编码方式 HZ,只是不常用。GB2312 不包含朱镕基的“镕”字,政府、新闻、出版、印刷等行业和部门在使用中感到十分不便,于是它在1993 年被扩展为 GBK,后者包括 21886 个字符(含 21003 个汉字),没有形成正式标准。2000 年发布的 GB18030 包含 70244 个字符(含 27533 个汉字),采用四字节编码。GB18030 之前还出现过一个 GB13000,没有形成气候。
1990 年ISO 推出了通用字符集(Universal Character Set,UCS),即ISO 10646,意图一统江湖。它有两种编码:双字节的 UCS-2 和四字节的UCS-4。
ISO 之外还有个希望一统江湖的组织:统一码联盟(The UnicodeConsortium),它于 1991 年推出了 Unicode 1.0。后来两家组织意识到没必要做重复工作,于是开始合并双方的成果,携手奔小康。从 Unicode 2.0开始,Unicode 采用了与 ISO 10646-1 相同的编码。
Unicode 主要有三种编码:UTF-8、UTF-16、UTF-32。UTF-8 使用一至四个 8 位编码。互联网工程任务组(Internet Engineering Task Force,IETF)要求所有网络协议都支持 UTF-8,互联网电子邮件联盟(Internet Mail Consortium,IMC)也建议所有电子邮件软件都支持 UTF-8,所以它已成为互联网上的事实标准。UTF-16 用一或两个 16 位编码,基本上是UCS-2 的超集,和 ASCII 不兼容。UTF-32 用一个 32 位编码,它是 UCS-4的一个子集。
上一篇
已是最后文章
下一篇
已是最新文章