1. 字元集與字元編碼 1.1. 字元集 1.2. 字元編碼 1.3. 兩者的關係 2. 字元編碼的發展歷史 2.1. 第一個階段 ASCII編碼 2.1.1. ASCII 2.1.2. EASCII 1. 字元集與字元編碼 1.1. 字元集 字元集(Charcater Set或Charset): ...
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,未來還會折騰更多東西,不死不休。
感謝大家的關註,期待與你一起成長。
【SunLogging】 掃碼二維碼,關註微信公眾號,閱讀更多精彩內容