ISO 8859
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 编码相同。其中 00H 到 1FH 是控制字符,后续 20H 到 7EH 是可打印字符,而后续 7FH 是控制字符。
为兼容一些 ASCII 处理逻辑, ISO 8859 系列编码中,对位权为 [math]\displaystyle{ 2^5 }[/math] 和 [math]\displaystyle{ 2^6 }[/math] 的两位均为 0 的编码都没有实际分配字符。换句话说,把 7FH 到 9FH 都保留,实际通过 ISO 6429 或 ISO 6630 等将其分配具体的控制字符。
但是, ISO 8859 中并没有明确所有上述控制字符的内容,只是标记为“其不代表图形字符”,可以认为就是保留为控制字符,符合 ISO 4873 规则。
对剩余的打印字符部分,字符安排在编码之间没有太大的一致性。对几种拉丁字母, C0H 到 DFH 和 E0H 到 FFH 和 ASCII 部分对应的 40H~5FH 与 60H~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 卡编码 | - |
早期二进制码位分配的编码 | - | BCDIC、EBCDIC | ASCII (ISO 646-US 、 ISO 646-IRV) |
地区字符编码 | - | - | ISO 8859 : ISO 8859-1 、 ISO 8859-2 、…… |
- | - | EUC 类编码,含第一个国标字符集 GB 2312 , 其编码 EUC-CN(IBM 代码页 936)也称 GB 2312 | |
多地区字符编码通过切换串兼容 | - | - | 通用框架: ISO 4873、ISO 2022 ,含 ISO-2022-CN ISO-2022-CN 的简化: HZ 编码 |
无需切换串的自同步编码 | - | UTF-EDCBIC | 字符集 Unicode / ISO 10646 ,有常见编码 UTF-8、 UTF-16 、 UTF-32 及废弃编码 UTF-1 、 UTF-7 |
地区字符编码扩充 | - | - | 国标系列后续:GBK(微软代码页 936)、 GB 18030(微软代码页 54936) |
- ↑ https://en.wikipedia.org/wiki/ISO/IEC_8859
- ↑ https://baike.baidu.com/item/ISO%2FIEC%208859/916777
- ↑ https://en.wikipedia.org/wiki/ISO/IEC_8859-1
- ↑ 在长单词内布置的连字符候选位置,在支持的软件中,如果行内空间不足可以在这里插入真正的连字符并重新换行。