hit counter for blogger

黑暗執行緒

 黑暗執行緒搬新家囉!! http://www.darkthread.net

12/17/2006

KB-Unicode編碼解析小工具

以下是一小段我對Unicode的粗淺了解, 希望對深陷其中的云云眾生有所幫助:

1. Unicode是為了應付全世界所有文字符號編碼而發明的,古早的ASCII Code只能表示255個字元,所以Universal Character Set-2(UCS-2)的標準被制定出來,以16bit表示文字,企圖容納世界上所有文字符號,目前(Unicode 2.0)已經制定了38,885個字,但仍有許多國家的文字與符號仍未被納入,餘下的26650個字肯定不夠用。因此目前又有UCS-4的誕生,以4個位元組來表示一個字符,未來將可容納20億個字元集。Windows NT以後的版本,其核心已採用Unicode作為文字編碼標準,採用的便是UCS-2。

2. Big5是古早前制定出來以2個Byte表示中文的編號法則,英文部分仍是以一個位元組表示,在這種混合長度的編碼法則中,由前一個字元來決定接下來的字元與他成為一個中文字或是另一個獨立英文字母。

 3. UCS-2固定以兩個位元組表示一個字,即使是英文字母也佔要2Byte,因此UTF(UCS Transformation Format)-8就誕生了。它是UCS-4標準的一部分,和 Big5的原理類似,英文只用一個byte,中文或符號就用2-3個byte。就純英文而言,可以大量減少資料量,但用在中文字上則比UCS-2多了50%(2 bytes vs 3 bytes)的資料量。

維基百科上有關於上述標準的完整說明,有興趣的人可以看看: UCS-2/UTF-16UTF-8BIG5Unicode。另外在台灣,為了彌補BIG5字碼不足的問題,也有BIG5e狗尾續貂,若以與世界接軌的觀點來看,還是應該回歸Unicode,向世界標準看齊才是王道!
(這篇由 堃(方方土) 探討 Big5e 編碼的文章,是我了解Unicode的入門讀物,解釋得挺清楚,推薦給大家看)

處理中文亂碼問題,常要檢核二進位資料才能抓出問題所在,所以我寫了一個小工具,可以輸入文字顯示BIG5、GB2312、UCS-2、UTF-8編碼的十六進位資料解析,在檢核編碼是否正確時相當好用,有興趣的人可以按這裡下載。(需要.NET 2.0)

EncAnalyzer

1 Comments:

Post a Comment

<< Home