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、EsperantoISO 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
泰國語系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
沒有留言:
張貼留言