ISO 8859

来自GSXAB的知识库
ISO8859
术语名称 ISO8859
英语名称 ISO8859

ISO/IEC 8859 是完全的跨地区兼容 ASCII字符编码标准,是 8 比特的字符编码标准。与其前身的 ISO 646 将 7 比特划分为不变区并变化部分字符不同, ISO 8859 中与 ASCII 重叠的部分(最高位为 0 ,即 0~127)中字符均不允许变化,而使用其他部分(最高位为 1 ,即 128~255)编码其他字符。

ISO 8859 标准分为 15 个标准,分别对应一套不同编码,且有通用别名,通常则使用序号或别名进行标记。如 ISO 8859-1 或 Latin-1 、 ISO 8859-2 或 Latin-2 等。

初版于 1987 年,是 ISO 与 IEC 的标准。

ISO 8859 取代了 ISO 646 ,后续被 ISO 10646 取代。

具体编码名称

ISO 8859[1][2]
编码名称 常用别名 说明
ISO 8859-1 Latin-1 西欧语言
ISO 8859-2 Latin-2 中欧语言
ISO 8859-3 Latin-3 南欧语言
ISO 8859-4 Latin-4 北欧语言
ISO 8859-5 Cyrillic 或 Latin/Cyrillic 斯拉夫语言
ISO 8859-6 Arabic 或 Latin/Arabic 阿拉伯语
ISO 8859-7 Greek 或 Latin/Greek 希腊语
ISO 8859-8 Hebrew 或 Latin/Hebrew 希伯来语
ISO 8859-9 Latin-5 或 Turkish 土耳其语
ISO 8859-10 Latin-6 或 Nordic 北日耳曼语支
ISO 8859-11 Thai 泰语
ISO 8859-13 Latin-7 或 Baltic Rim 波罗的语族
ISO 8859-14 Latin-8 或 Celtic 凯尔特语族
ISO 8859-15 Latin-9 西欧语言(ISO 8859-1 的调整版)
ISO 8859-16 Latin-10 东南欧语言

编码特征

最高位为 0 的部分与 ASCII 编码完全相同。其中 00H1FH 是控制字符,后续 20H7EH 是可打印字符,而后续 7FH 是控制字符。

为兼容一些 ASCII 处理逻辑, ISO 8859 系列编码中,对位权[math]\displaystyle{ 2^5 }[/math][math]\displaystyle{ 2^6 }[/math] 的两位均为 0 的编码都没有实际分配字符。换句话说,把 7FH9FH 都保留,实际通过 ISO 6429 或 ISO 6630 等将其分配具体的控制字符。

对剩余的打印字符部分,字符安排在编码之间没有太大的一致性。对几种拉丁字母, C0HDFHE0HFFH 和 ASCII 部分对应的 40H~5FH60H~7EH 一样,分配给各字符集中需要的不属于 ASCII 的大写字母和小写字母,且大小写间保持对 20H 取反可以互相得到,而 A0H~B0H 分配给多出来的字母(如果有,以 10H 取反对应分配大小写)或标点符号。但是对于其他字母体系,由于需要包括各体系中的标准和变体字母,基本上都是把剩余部分全部分配给普通字母。

但是可能是由于 ISO 8859 的年代已经不需要保留全 1 字符给打孔纸带的擦除含义了, FFH 的位置并不是保留为擦除字符 EO 而是分配给了普通的打印字符。

使用

ISO 8859 尽管在规范上被 ISO 10646 取代,但是仍然在实际中被广泛使用。常见的 Windows 代码页中的一部分仍然是 ISO 8859 的遗留,只是名字被更换为代码页的编码。

很多时候,如果多字节编码不能正常处理,其乱码仍然是 ISO 8859-1 / Latin-1 的形式。主要是经常出现多字节编码使用自动编码探测时失败,被误用 ISO 8859-1 解析。


常见字符编码
早期编码 电报码、 BCD 、ASCIIISO 646
ISO 8859 ISO 8859-1 、 ISO 8859-2 、……
各国国家标准及代码页 GB 2312GBKGB 18030
Unicode / ISO 10646 UTF-7 、 UTF-8、 UTF-16 、 UTF-32