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 等。

ISO 8859-1 即 Latin-1 是常见的默认编码。

初版于 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 等将其分配具体的控制字符。

但是, ISO 8859 中并没有明确所有上述控制字符的内容,只是标记为“其不代表图形字符”,可以认为就是保留为控制字符,符合 ISO 4873 规则。

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

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

ISO 8859-1 码位表

ISO 8859-1 [3]
- _0
???? 0000
_1
???? 0001
_2
???? 0010
_3
???? 0011
_4
???? 0100
_5
???? 0101
_6
???? 0110
_7
???? 0111
_8
???? 1000
_9
???? 1001
_A
???? 1010
_B
???? 1011
_C
???? 1100
_D
???? 1101
_E
???? 1110
_F
???? 1111
0_
0000 ????
1_
0001 ????
2_
0010 ????
SP
空格
! " # $ % & ' ( ) * + , - . /
3_
0011 ????
0 1 2 3 4 5 6 7 8 9 : ; < = > ?
4_
0100 ????
@ A B C D E F G H I J K L M N O
5_
0101 ????
P Q R S T U V W X Y Z [ \ ] ^ _
6_
0110 ????
` a b c d e f g h i j k l m n o
7_
0111 ????
p q r s t u v w x y z { | } ~ DEL
擦除字符
8_
1000 ????
9_
1001 ????
A_
1010 ????
NBSP
不换行空格
¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ SHY
软连字符[4]
® ¯
B_
1011 ????
° ± ² ³ ´ µ · ¸ ¹ º » ¼ ½ ¾ ¿
C_
1100 ????
À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï
D_
1101 ????
Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß
E_
1110 ????
à á â ã ä å æ ç è é ê ë ì í î ï
F_
1111 ????
ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ

可以看到其实新增部分还是对应了原来 ASCII 的布局,在 0x30 对应的 0xB0 行以数字符号为主,然后最后的 0xC0-FF 对应 0x40-7E 编码字母,且大小写关系也是对应的。

使用

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

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


常见字符集字符编码
原始编码 电报码( Morse 电码 BCD 码IBM 卡编码 -
早期二进制码位分配的编码 - BCDICEBCDIC ASCIIISO 646-US 、 ISO 646-IRV)
地区字符编码 - - ISO 8859 : ISO 8859-1 、 ISO 8859-2 、……
- - EUC 类编码,含第一个国标字符集 GB 2312
其编码 EUC-CNIBM 代码页 936)也称 GB 2312
多地区字符编码通过切换串兼容 - - 通用框架: ISO 4873ISO 2022 ,含 ISO-2022-CN
ISO-2022-CN 的简化: HZ 编码
无需切换串的自同步编码 - UTF-EDCBIC 字符集 Unicode / ISO 10646 ,有常见编码 UTF-8UTF-16UTF-32 及废弃编码 UTF-1UTF-7
地区字符编码扩充 - - 国标系列后续:GBK微软代码页 936)、 GB 18030微软代码页 54936
  1. https://en.wikipedia.org/wiki/ISO/IEC_8859
  2. https://baike.baidu.com/item/ISO%2FIEC%208859/916777
  3. https://en.wikipedia.org/wiki/ISO/IEC_8859-1
  4. 在长单词内布置的连字符候选位置,在支持的软件中,如果行内空间不足可以在这里插入真正的连字符并重新换行。