2009/9/22

資訊交換碼初論

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 了。有關國內及國際的中文碼發展沿革,可以參考全字庫「中文碼介紹」這篇文章。

延伸閱讀:

璉璉的部落格有更多參考資料:http://tlcheng.spaces.live.com/Blog/cns!145419920BFD55A7!1538.entry

Technorati 的標籤:,,,,,,,,

沒有留言:

張貼留言