[JavaScript] 如何拆解中文倉頡及注音對應碼

本文的目的是解說如何從一個中文字 (Unicode) 拆解出它的倉頡碼及注音碼。

我學倉頡已經很久了, 久到一些原本記得拆法的中文字都忘記怎麼拆了。所以我現在想要使用 JavaScript 寫一個練習倉頡輸入法的小工具。以下就是我的開發過程。

資料下載

首先, 我們先到政府資料交換平台下載 CNS11643 中文標準交換碼全字庫 (簡稱全字庫) 檔案。請下載那個 ZIP 檔。但我們只需要裡面的少數幾個檔案; 其它的檔案用不到。

下載之後請把 ZIP 檔打開, 它會把所有的資料放在 Open_Data 檔案夾下面。我們需要其中兩個檔案:

  1. 在 MapingTables/Unicode 資料夾裡面的 CNS2UNICODE_Unicode BMP.txt 以下簡稱「檔案一」。
  2. 在 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 中卻使用「土中田女」。

此外, 你可能會查出「日」字的注音是「ㄇㄧˋ」而不是「ㄖˋ」。這是因為注音的對應檔裡因為有破音字而有重複, 而「ㄇㄧˋ」這個拼音列在「ㄖˋ」的前面。所以你應該要注意有 key 並非唯一值的這個情況。


Dev 2Share @ 點部落