本文的目的是解說如何從一個中文字 (Unicode) 拆解出它的倉頡碼及注音碼。
我學倉頡已經很久了, 久到一些原本記得拆法的中文字都忘記怎麼拆了。所以我現在想要使用 JavaScript 寫一個練習倉頡輸入法的小工具。以下就是我的開發過程。
資料下載
首先, 我們先到政府資料交換平台下載 CNS11643 中文標準交換碼全字庫 (簡稱全字庫) 檔案。請下載那個 ZIP 檔。但我們只需要裡面的少數幾個檔案; 其它的檔案用不到。
下載之後請把 ZIP 檔打開, 它會把所有的資料放在 Open_Data 檔案夾下面。我們需要其中兩個檔案:
- 在 MapingTables/Unicode 資料夾裡面的 CNS2UNICODE_Unicode BMP.txt 以下簡稱「檔案一」。
- 在 Properties 資料夾裡面的 CNS_cangjie.txt。如果你想拆解的是注音碼, 則可改用 CNS_phonetic.txt 以下簡稱「檔案二」。
請把以上兩個檔案準備好。
轉碼
以上兩個檔案都是 CSV 字典型式。以檔案一為例, 其格式如下:
1-5578 6838
1-5579 6848
1-557A 6846
1-557B 6853
1-557C 6839
1-557D 6842
1-557E 6854
...
第一個欄位是它所使用的 key, 第二個欄位則是 Unicode。
取上例中第一個 key '1-5578' 的值 '6838' 為例, 它就是中文「核」這個字的 Unicode。我們可以使用 JavaScript 把它還原成中文字:
當然我們也很容易從中文字轉換為 Unicode:
對應倉頡碼
接著我們來看檔案二:
1-5578 DYVO
1-5579 JVD
1-557A DSMG
1-557B DMAM
1-557C DAV
1-557D DGG
1-557E DGR
...
對照我們在上面查到的「核」字的 key '1-5578', 我們就可以查出該字的倉頡碼為 DYVO (木卜女人) 了。
兩個字典檔都有了, 接下來我們只要寫幾個簡單的 lookup 程式就可以進行查詢了。
不過, 請注意全字庫使用的注音碼和倉頡碼不一定和 Windows 使用的一樣。例如「塿」這個字, 全字庫使用「土中日女」, 但 Windows 中卻使用「土中田女」。而「日」字的注音是「ㄇㄧˋ」而不是「ㄖˋ」。