- 2.2. 第二個階段 本地化
- 2.2.1. ANSI
- 2.2.2. ISO/IEC 8859-N
- 2.2.2.1. 什麼是ISO/IEC 8859-N?
- 2.2.2.2. ISO 8859-1的編碼表
上一篇《字元編碼發展史1 — ASCII和EASCII》我們講解了字元編碼的起源ASCII和EASCII。本篇我們將繼續講解字元編碼的第二個發展階段中的ISO 8859-N
。
2.2. 第二個階段 本地化
2.2.1. ANSI
計算機發明之初及後面很長一段時間,只用於美國及西方一些已開發國家,ASCII能夠很好滿足使用者的需求。後來,隨著個人計算機的發展和普及,美國這些生產計算機的企業(如IBM、惠普)希望把計算機賣到世界上更多的國家,其他的國家也希望能在自己的國家發展和應用計算機這個新技術,比如我們中國。
但是早期計算機使用ASCII編碼只能滿足英語國家和少數歐洲國家的需求,計算機要在全世界範圍推廣應用,就要解決各個國家語言編碼的問題。各個國家、地區為了用計算機記錄並顯示自己的語言字元,都在ASCII編碼方案的基礎上,設計了各自的編碼方案,於是就出現了很多適配不同地區語言的字元編碼標準,如ISO 8859-N
、GB2312
、GBK
、BIG5
等,這些編碼方案被國際標準化組織收納並將其標準化。
透過多套編碼方式來適配不同地區語言的過程,也叫字元編碼的本地化。所有這些各個國家和地區所獨立制定的既相容ASCII又互相之間不相容的字元編碼,微軟統稱為ANSI編碼。
ANSI其實有多個含義:
- ANSI: 全稱是
American National Standards Institute
,即 美國國家標準協會。它是一個非營利組織,負責協調和制定美國國家標準,並代表美國參與國際標準化活動。 - ANSI: 微軟的ANSI內碼表。
計算機的普及是伴隨著Windows作業系統的發展的,Windows作業系統以其強大的圖形化介面和優秀的人機互動迅速佔領了個人計算機90%多的市場份額,佔據了統治性地位。微軟的Windows作為全球性的作業系統,為了能適配各個國家和地區的語言,制定了一套內碼表,用於對映各個國家和地區的語言的字元編碼,微軟稱之為ANSI內碼表(即ANSI Code Page
,簡稱ACP
)。
2.2.2. ISO/IEC 8859-N
EASCII雖然增加了歐洲常用字元,但是能表達的字元依然太少,甚至說遠遠不夠,比如希臘語的字母表。
為了解決這個問題,ISO/IEC 8859-N
字符集和編碼方案便應運而生。
2.2.2.1. 什麼是ISO/IEC 8859-N?
- ISO: 全稱
International Organization for Standardization
,即 國際標準化組織。它是一個全球性的非政府組織,負責制定和釋出國際標準,以促進全球貿易和技術交流。 - IEC: 全稱
International Electrotechnical Commission
,即 國際電工委員會。它是一個全球性的非政府組織,負責制定和釋出與電氣、電子和相關技術領域的國際標準。 - ISO/IEC 8859: 是國際標準化組織(ISO)和國際電工委員會(IEC)制定的一組字元編碼標準。
ISO/IEC 8859
也經常簡稱ISO 8859
,如``ISO 8859-1`(後面的內容均以簡稱的方式描述)。
ISO 8859
字元編碼與EASCII
字元編碼的設計思路一樣:同樣是採用單個位元組(8位)的編碼方式,在ASCII碼的基礎上,利用了ASCII沒有用到的最高位(首位),將編碼範圍從原先ASCII碼的0x00~0x7F
(十進位制為0~127
),增加0x80~0xFF
,擴充套件到了0x00~0xFF
(十進位制為0~255
)。
與EASCII
區別是:EASCII
字元編碼只包含了單個字符集(128個ASCII字元+128個擴充套件字元),而ISO 8859
字元編碼則包含一組字符集,每個字符集支援不同地區的語言。總共有15個子集,對應15種編碼方式,從ISO 8859-1
到ISO 8859-16
,其中ISO 8859-12
未定義,所以實際上是15個,這15個子集的區別如下:
ISO 8859-n | 英文別名 | 表達的語種 | 中文解釋 |
---|---|---|---|
ISO 8859-1 | Latin-1 | Western Europe | 西歐語言 |
ISO 8859-2 | Latin-2 | Central Europe | 中歐語言 |
ISO 8859-3 | Latin-3 | Southern Europe | 南歐語言。世界語也可用此字符集顯示。 |
ISO 8859-4 | Latin-4 | Baltic | 北歐語言 |
ISO 8859-5 | Cyrillic | 斯拉夫語言 | |
ISO 8859-6 | Arabic | 阿拉伯語 | |
ISO 8859-7 | Greek | 希臘語 | |
ISO 8859-8 | Hebrew | 希伯來語 | |
ISO 8859-9 | [Latin-5 | Turkish | 土耳其語,它把Latin-1的冰島語字母換走,加入土耳其語字母 |
ISO 8859-10 | Latin-6 | Nordic | 北歐的日耳曼語支,用來代替Latin-4 |
ISO 8859-11 | Thai | 泰國語,從泰國的 TIS620 標準字集演化而來 | |
ISO 8859-13 | Latin-7 | Estonian | 愛沙尼亞語,或 Baltic Rim 波羅的語族 |
ISO 8859-14 | Latin-8 | Celtic | 凱爾特語族 |
ISO 8859-15 | Latin-9 | Western | 西歐語言,加入Latin-1欠缺的芬蘭語字母和大寫法語重音字母,以及歐元(€)符號。 |
ISO 8859-16 | Latin-10 | Romanian | 羅馬尼亞語,東南歐語言,主要供羅馬尼亞語使用,並加入歐元符號。 |
需要注意的是:
- 這15個字符集全部都相容ASCII編碼。
- 每一個字符集的補充擴充套件部分,都只實際使用了
0xA0~0xFF
(十進位制為160~255
)這96個編碼,而0x80~0x9F
(十進位制為128~159
)這32個編碼並未實際定義字元。
至此,ISO 8859-N
系列編碼,基本上能滿足大部分(以拉丁字元為語系的)歐洲國家。
2.2.2.2. ISO 8859-1的編碼表
我們可以看一下ISO-8859-1
的編碼表:
ISO-8859-1 編碼表
未完待續…… 欲知後事如何,且看下回分解。
下回預告:字元編碼發展史3 — GB2312/Big5/GBK/GB18030。
歷史文章推薦:
字元編碼發展史1 — ASCII和EASCII
大家好,我是陌塵。
IT從業10年+, 北漂過也深漂過,目前暫定居於杭州,未來不知還會飄向何方。
搞了8年C++,也幹過2年前端;用Python寫過書,也玩過一點PHP,未來還會折騰更多東西,不死不休。
感謝大家的關注,期待與你一起成長。