在回答這個問題前,請你先瞭解萬國碼 Unicode 的意義,及他的編碼方式。
The Joel on Software Translation Project:萬國碼
節錄:
Unicode
Unicode是個勇敢的嘗試,想用單一個字元集去涵括地球上所有合理的書寫系統,另外也要包括克林貢語等杜撰的語文。有些人誤認為Unicode只是個16位元碼,裡頭每個字都要佔16位元,所以總共有65,536個字元。事實上這並不正確。這是關於Unicode常見的誤解,所以如果你也這麼認為的話,不用難過。
事實上Unicode對字元有不一樣的想法,你必須瞭解Unicode的想法,否則是搞不懂的。
到目前為止,我們都假設一個字母會對映到某些位元,這些可以存在磁碟或記憶體中:
A -> 0100 0001
在Unicode裡一個字母是對映到一個叫code point的東西(還只是一個理論上的概念)。要如何在記憶體或是磁碟上表示code point就完全是另一回事。
在Unicode中,字母A是個精神上的觀念。它只會漂浮在天堂裡:
A
這個觀念上的A和B或者a都不一樣,不過A和A以及A都一樣。Times New Roman字型的A和Helvetica字型的A是相同的字元,但和小寫的"a"不一樣,這種想法似乎沒什麼好爭論的。不過在某些語言中,光是要決定一個字母是什麼就有得吵了。舉例來說,德文字母β究竟真正的字母還是ss(譯註:拉丁文的gei)的另一種特別寫法呢?如果字母的形狀在單字結束時會改變,改變之後要當作不同的字母嗎?希伯來文說是,阿拉伯文卻認為不是。不管如何,Unicode協會的聰明人已經在過去十年左右搞定了,雖然有一大堆政治爭論伴隨而來,不過你不用擔心。他們已經完全搞定了。 Unicode協會把所有字母系統中每一個觀念上的字母都分配一個魔術數字,這個數字的寫起來就像是:U+0645。這個魔術數字就叫一個code point。U+的意思是Unicode,數字則是用十六進位表示。U+FEC9就是阿拉拍文的字母Ain。英文字母A則是U+0041。你可以用Windows 2000/XP的charmap工具把這些數字全找出來,到Unicode網站也可以找到。
Unicode可以定義的字母數量並沒有實...