我們面臨的基本問題是世界上的書寫語言不能簡單地用256個8位元代碼表示。以前的解决方案包括內碼表和dbcs已被證明是不能滿足需要的,而且也是笨拙的。那什麽纔是真正的解决方案呢?
身為程式寫作者,我們經歷過這類問題。如果事情太多,用8位元數值已經不能表示,那麽我們就試更寬的值,例如16位元值。而且這很有趣的,正是unicode被製定的原因。與混亂的256個字元代碼映射,以及含有一些1位元組代碼和一些2位元組代碼的雙位元組字元集不同,unicode是統一的16位元係統,這樣就允許表示65,536個字元。這對表示所有字元及世界上使用象形文字的語言,包括一係列的數學、符號和貨幣單位符號的集合來說是充裕的。
明白unicode和dbcs之間的區別很重要。unicode使用(特別在c程式設計語言環境裏)「寬字元集」。「unicode中的每個字元都是16位元寬而不是8位元寬。」在unicode中,沒有單單使用8位元數值的意義存在。相比之下,在雙位元組字元集中我們仍然處理8位元數值。有些位元組自身定義字元,而某些位元組則顯示需要和另一個位元組共同定義一個字元。
處理dbcs字串非常雜亂,但是處理unicode文字則像處理有秩序的文字。您也許會高興地知道前128個unicode字元(16位元代碼從0x0000到0x007f)就是ascii字元,而接下來的128個unicode字元(代碼從0x0080到0x00ff)是iso 8859-1對ascii的擴展。unicode中不同部分的字元都同樣基於現有的標準。這是為了便於轉換。希臘字母表使用從0x0370到0x03ff的代碼,斯拉夫語使用從0x0400到0x04ff的代碼,美國使用從0x0530到0x058f的代碼,希伯來語使用從0x0590到0x05ff的代碼。中國、日本和韓國的象形文字(總稱為cjk)占用了從0x3000到0x9fff的代碼。
unicode的最大好處是這裏衹有一個字元集,沒有一點含糊。unicode實際上是個人電腦行業中幾乎每個重要公司共同合作的結果,並且它與iso 10646-1標準中的代碼是一一對應的。unicode的重要參考文獻是《the unicode standard,version 2.0》(addison-wesley出版社,1996年)。這是一本特別的書,它以其他文件少有的方式顯示了世界上書寫語言的豐富性和多樣性。此外,該書還提供了開發unicode的基本原理和細節。
unicode有缺點嗎?當然有。unicode字串占用的記憶體是ascii字串的兩倍。(然而壓縮檔案有助於極大地減少檔案所占的磁碟空間。)但也許最糟的缺點是:人們相對來說還不習慣使用unicode。身為程式寫作者,這就是我們的工作。 |
|
|