- 1. 字符集與字元編碼
- 1.1. 字符集
- 1.2. 字元編碼
- 1.3. 兩者的關係
- 2. 字元編碼的發展歷史
- 2.1. 第一個階段 ASCII編碼
- 2.1.1. ASCII
- 2.1.2. EASCII
- 2.1. 第一個階段 ASCII編碼
1. 字符集與字元編碼
1.1. 字符集
字符集(Charcater Set或Charset): 是一個系統支援的所有抽象字元的集合,也就是一系列字元的集合。字元是各種文字和符號的總稱,包括各國家文字、標點符號、圖形符號、數字等。常見的字符集有:ASCII字符集、GB2312字符集(主要用於處理中文漢字)、GBK字符集(主要用於處理中文漢字)、Unicode字符集等。
1.2. 字元編碼
字元編碼(Character Encoding): 是一套法則,使用該法則能夠對自然語言使用的字符集(如字母表或音節表),與計算機能識別的二進位制數字進行配對。即它能在符號集合與數字系統之間建立對應關係,是資訊處理的一項基本技術。通常人們用符號集合(一般情況下就是文字)來表達資訊,而計算機系統則是以二進位制的數字來儲存和處理資訊的。字元編碼就是將符號轉換為計算機能識別的二進位制編碼。
1.3. 兩者的關係
一般一個字符集等同於一種編碼方式,如ASCII、GB2312、GBK等。一般我們說一種編碼都是針對某一特定的字符集。
一個字符集上也可以有多種編碼方式,如Unicode字符集有UTF-8、UTF-16、UTF-32等編碼方式。所以字符集
與字元編碼
是一對一或一對多的關係。
一句話表示:
字符集
: 是要表達的所有字元的集合。字元編碼
: 是將字符集裡每一個字元與二進位制資料進行一一對映的的規則和機制。
2. 字元編碼的發展歷史
從計算機字元編碼的發展歷史來看,大概經歷了三個階段:
- 第一個階段: ASCII編碼
- 第二個階段: 字元編碼本地化——ANSI系列編碼
- 第三個階段: 字元編碼國際化——Unicode字符集和Unicode編碼
2.1. 第一個階段 ASCII編碼
第一個階段:ASCII字符集和ASCII編碼。
2.1.1. ASCII
計算機最早誕生於美國,剛開始計算機只支援英語(即拉丁字元),其它語言不能夠在計算機上儲存和顯示。ASCII用一個位元組(Byte)的7位(bit)表示一個字元,第一位(即最高位)置0,低7位用來編碼字符集,共能表達2^7(即128)個字元。
ASCII的這種編碼方式即為ASCII編碼
,ASCII編碼的字符集即為ASCII字符集
。ASCII字符集
包含的內容有:26個小英文字母、26個大英文字母、英文標點符號,10個阿拉伯數字、以及非列印的(不能顯示)控制符號。
圖1 ASCII編碼表
2.1.2. EASCII
用ASCII碼錶達英語基本上沒什麼問題,但是當英語中包含一些外來詞(如naïve、café、élite等)時,ASCII碼就沒有辦法表達了,所有重音符號都不得不去掉。
後來為了表示更多的歐洲常用字元又對ASCII進行了擴充套件,於是有了EASCII(Extended ASCII
),EASCII用8位表示一個字元,使它能多表示128個字元,支援了部分西歐字元。
圖2 擴充套件ASCII編碼表
至此,ASCII + EASCII
能表達256(2^8)個字元,基本能滿足英語國家和歐洲部分國家的需求。
注意: EASCII碼目前幾乎不再使用了,很早就被廢棄掉了,被更先進的ISO/IEC 8859-N
字元編碼方案替代了。
未完待續…… 欲知後事如何,請看下回分解。
下回預告:字元編碼發展史2 — IOS 8859-N。
大家好,我是陌塵。
IT從業10年+, 北漂過也深漂過,目前暫定居於杭州,未來不知還會飄向何方。
搞了8年C++,也幹過2年前端;用Python寫過書,也玩過一點PHP,未來還會折騰更多東西,不死不休。
感謝大家的關注,期待與你一起成長。