您的目前位置:中文輸入法世界輸入法介紹專家&中文輸入法

中文內碼

黑 客

初接觸中文系統的朋友﹐對內碼會感到很困擾(編者按﹕就算是斲輪老手﹐亦經常感到困擾)。你說它很難理解﹐事實上又不然﹔但你說很簡單﹐到實際要轉換時﹐忽然可能又會覺得很混亂。

英文系統內一樣有內碼。以一字節八位(8BITS)排列﹐共可得256個組合﹐即0至255。但由於英文字母加上大小寫及常用的符號後﹐也不到128個﹐所以在早期的電腦系統內﹐只用了0至127(即十六進制的00至7F)。後來IBM把127以後的位都全編上圖形﹐做成了256組合﹐至此英文的內碼編碼便是0至255(即00至FF)。

西文由於基本字符少﹐所以用2的8次冪就能包涵所有的字元。它的內碼集共0至255﹐名為ASCII。

中文呢﹖以字數較少的大陸GB字集來說﹐這個組合數(七千)已超過了一字節(8BITS)的256個組合。所以中文採用了二字節的編碼方法。二字節的組合數是2的16次冪﹐即65536。換言之﹐用這種方法﹐最多可以收編六萬五千多個中文字。

中國大陸用二字節編碼﹐第一個漢字(啊)從十六進制的B021開始﹐一直到F7FE(齇)止﹐名為GB碼。

台灣民間用二字節編碼﹐第一個漢字(一)從A440起﹐直排到F9D5(龘)﹐名為BIG5碼。台灣官方對外用的名為CNS碼或TCA碼。CNS碼即台灣的(“國家標準碼”)﹐與BIG5碼內漢字編碼集序﹐僅有四個字不同。而TCA碼即台灣的商界的公會碼。當然你還會聽過“倚天碼”這個編碼。它是“倚天”公司為了避開部分中文圖形碼在系統內被誤認為IBM的圖形碼﹐而自編的一套內碼。

中文的內碼就是這麼一碼子事。你說簡單不簡單﹐明確不明確。

內碼的轉換﹐說出來也很簡單。譬如要把“台灣”這兩個字從GB碼轉成BIG5碼。首先﹐我們先要知道它們的內碼。這二字的GB碼是“台”CCA8、“灣”CDE5﹔它的BIG5碼是“台”A578、“灣”C657。轉碼時﹐只要把CCA8改成A578﹐把CDE5改成C657便完了。

但當你用坊間的譯碼程式轉碼後﹐再打開文件一看﹐你會看到轉碼後的是“台灣”二字而不是“台灣”。出了什麼問題﹖問題出在香港人的用字問題上。港人愛用“台灣”而不用“臺灣”。

在BIG5字集內﹐“台”(A578)“臺”(BB47)兩字並存。在GB碼字集內﹐有“台”無“臺”﹐所以轉碼時﹐程式認為“台”是簡體字﹐把它轉成“臺”字。

若你用的是GB碼繁體擴充字集﹐它會也有“台”“臺”二字。此時﹐若你打的是“台灣”而不是“臺灣”﹐那麼用坊間的轉碼程式轉碼後﹐會變成是“灣”(灣字之前的字不見了)。這就是為什麼中文的內碼經常令人頭大的原因。

原載香港大公報1996年6月


返回上頁