[入門] 資訊交換碼初論

Unicode 是為了因應多語系互通與共存而產生的。好玩的是,我看過很多人把它誤寫成 Unitcode,這是對於這個通用碼的不了解。它其實是 Universal Code 的縮寫,所以我們說它叫做「萬國碼」...

 

Unicode 是為了因應多語系互通與共存而產生的。好玩的是,我看過很多人把它誤寫成 Unitcode,這是對於這個通用碼的不了解。它其實是 Universal Code 的縮寫,所以我們說它叫做「萬國碼」。

在純西歐語系的環境下,最常用的電腦編碼標準有三種:

  • ASCII - American Standard Code for Information Interchange (美國資訊交換標準碼) 是最早出現在電腦上的編碼方式之一,它使用七位元編碼方式,定義了標準英文字元、數字、符號和特殊字元 (例如 Bell、Tab、CR、LF、Esc) 等等。
  • ANSI - 由 ANSI (American National Standard Institute, 美國國際標準協會) 所制定的編碼標準,使用了八位元編碼方式,將 0~127 字元分配 ASCII 碼,將 128~255 字元分配給其它的西歐字元。
  • ISO-8859 - 由 ISO (International Stander Organization 國際標準局) 所製定的編碼標準,將特定的語系納入,例如:
    標準  名稱  對應語言
    ISO 8859-1 Latin alphabet No. 1 西歐語系
    ISO 8859-2 Latin alphabet No. 2 中歐、東歐語系
    ISO 8859-3 Latin alphabet No. 3 南歐或 Maltese、Esperanto
    ISO 8859-4 Latin alphabet No. 4 北歐語系
    ISO 8859-5 Latin/Cyrillic alphabet 斯洛伐克語系
    ISO 8859-6 Latin/Arabic alphabet 阿拉伯語系
    ISO 8859-7 Latin/Greek alphabet 希臘語系
    ISO 8859-8 Latin/Hebrew alphabet 猶太語系
    ISO 8859-9 Latin alphabet No. 5 土耳其語系
    ISO 8859-10 Latin alphabet No. 6 北歐斯堪地納維亞語系
    ISO 8859-11 Latin/Thai alphabet 泰國語系
    (Part 12 未定義)
    ISO 8859-13 Latin alphabet No. 7 波羅的海語系
    ISO 8859-14 Latin alphabet No. 8 凱爾特語系
    ISO 8859-15 Latin alphabet No. 9 歐盟語系
    ISO 8859-16 Latin alphabet No. 10 東南歐語系

上面這些編碼方式都是使用八位元編碼。所以不要以為 ISO 8859 系列定義了那麼多語言,就以為它必定是雙位元以上的編碼,事實上它們都是各自定義的。詳細的列表可以參考「The ISO 8859 Alphabet Soup」這一篇文章。

如果使用上述的編碼方式,非但無法用來顯示東方語系,也無法讓不同的語言顯示在同一頁上面。為了因應世界潮流,Unicode 便順勢而生了。

Unicode 是將所有的語言整合在同一個編碼頁裡面,使得 (幾乎) 所有語言的任何一個文字都有它單一的定址編碼,而不像 ISO 8859 編碼,有多種語言佔用同一個字元碼。

不過 Unicode 本身也有不同的標準:

  • Unicode UTF-16 編碼:使用 16 位元整數來定址字元。在 .Net Framework 中可以使用 UnicodeEncoding 類別進行轉換。
  • Unicode UTF-32 編碼:使用 32 位元整數來定址字元。在 .Net Framework 中可以使用 Unicode32Encoding 類別進行轉換。
  • Unicode UTF-8 編碼:使用 8 位元、16 位元和 24 位元、甚至 48 位元整數來定址字元。0 ~ 127 使用 8 位元編碼,存放標準 ASCII 字元,128 ~ 2047 使用 16 位元編碼,存放拉丁、希臘和阿拉伯等語系,2048 ~ 65535 使用 24 位元編碼,存放中文、日文、韓文等語系。在 .Net Framework 中可以使用 Unicode8Encoding 類別進行轉換。

在 .Net Framework 內部都是使用 UTF-16 編碼。

在 Unicode 出現之前,我們自行推出了 Big5 大五碼的中文編碼標準。但自從 Unicode 正式推出之後,電腦間與國際間的資訊交換幾乎已經完全採用 Unicode 了。有關國內及國際的中文碼發展沿革,可以參考全字庫「中文碼介紹」這篇文章。

延伸閱讀:


Dev 2Share @ 點部落