土法煉鋼:讀取全字庫資料集
以及建立最新版的「全字庫倉頡」
現在網路上所謂的「中標倉頡」,大多指「全字庫文字屬性規範 94.2 版」,那是2006年的東西了(那時我還沒改練行列輸入法)。
不過這20年間,其實中標倉頡(全字庫倉頡)也一直在改善,但諸如PIME等優秀的平台,內建的中標倉頡(cnscj.cin)的用,還是20年前的老表格。
但這些資料都公開在政府開放資料平台,可以自己更新。
而我不會任何程式語言,只有一堆土法煉鋼的「土公仔步」,我把這些土公仔步數寫在這裡。供和我一樣,沒有任何程式基礎的人參考使用。
首先,先到全字庫網站,然後點取「政府資料開放平臺-全字庫資料集」,
或直接進入這個聯結:https://data.gov.tw/dataset/5961
下載這兩個檔案:
①全字庫中文碼對照表
②全字庫屬性資料集對照表
打開①「全字庫中文碼對照表」(MapingTables.zip),打開「資料夾Unicode」,裡面有數個txt檔,長這樣:
1、把「資料夾Unicode」,裡面有數個txt檔「依次」貼到excel或calc裡。像這樣:
2、在「C2」輸入這條公式:
=UNICHAR(HEX2DEC(B2))
這條公式的意思是:
UNICHAR:把某個unicode轉成字元。
hex2dec:因為試算表預設的處理的數字是10進位,但unicode是16進位,所以要多這句。
B2:把這欄轉成字元。
然後對著C2欄位右下角點兩下,讓公式複製到全部的列,這時,電腦就會讀出B欄的unicode,並把其代表的字元放在C欄。
也就是說,C欄要只是「應對字元」,而不是公式(在試算表裡放10幾萬條公式,這是很可怕的,很容易掛屄)。
3、然後在「D2」輸入下面的公式,你就可以知道這些字元在什麼區位了:
=IF(B2="", "", LOOKUP(HEX2DEC(B2), {0,13312,19968,40960,57344,63744,64256,131072,173824,177984,178208,183984,191472,192096,194560,195104,196608,201552,205744,209980,983040,1048574}, {"(01)符號","(03)延伸A區","(02)基本區(URO)","(01)符號","(13)私用區(造字)","(16)相容漢字(基本)","(01)符號","(04)延伸B區","(05)延伸C區","(06)延伸D區","(07)延伸E區","(08)延伸F區","(11)延伸I區","(01)符號","(15)相容漢字增補","(01)符號","(09)延伸G區","(10)延伸H區","(12)延伸J區","(01)符號","(14)增補私用區A","(01)符號"}))
接下來的步驟一樣:按兩下欄位右下角,公式覆蓋所有的列
然後複製到文字編輯器,貼成純文字覆蓋D欄。
然後把這個工作表命名為「Cns2Uni」,你就得到一張對照表了。
打開我們剛剛已下載的「全字庫屬性資料集對照表」(Properties.zip)
打開裡面的「CNS_cangjie.txt」這是全字庫的倉頡對照表。
一樣,在excel或calc(同一個檔案裡)打開一張新的工作表,然後設定自動篩選。
calc是:
=VLOOKUP(A2,$Cns2Uni.A:D,3,0)
excel是:
=VLOOKUP(A2, Cns2Uni!A:D, 3, 0)
但其實這個公式的小差異沒什麼,因為可以用滑鼠操作。
公式的白話是這樣:
VLOOKUP:給我查找
A2:找A2這個詞條
$Cns2Uni.:在Cns2Uni這張表格裡找(用滑鼠點這個表格軟體就會自動輸入到公式裡)
A:D:從A欄到D欄都是工作範圍(用滑鼠從A欄按左鍵+shift拖到D欄)
3:我要第3欄的資料(即,把「工作表Cns2Uni」A欄的CNS碼,對應出第3欄C欄的漢字)
0:不要給我最接近值,有什麼給什麼。
一樣那三個步驟:覆蓋到所有列、複製到文字編輯器再貼回去。
我們就得到這樣的倉頡表格了。
=VLOOKUP(A2,$Cns2Uni.A:D,4,0)
公式的邏輯和上一條一模一樣。
你就可以得到這樣的對照表:
有倉頡碼、有漢字,而且知道這個漢字放在哪一區。
最後,用自動篩選器,
這張表格就像模像樣了。
如果你要使這張表格成為cin檔,
只要用篩選器挑出你要的範圍(如uro到B區)
然後找一張「公認標準」的表格,用=match把URO基本區的重碼順序校對一下就好了
這部份有人想知道我再寫吧。
最後的最後還有,別使用「增補私用區A」裡的字。那是全字庫暫放的,還沒編入unicode,你放入輸入法,現在別人也讀不到;以後可能會正式的放到unicode裡,會在別的位置。
用了他,你不是打出豆腐,就是亂碼。
就這樣。
倉頡表格下載:
#「全字庫倉頡」的顯名聲明:
#編碼資料來源為「數位發展部 CNS11643 中文標準交換碼全字庫網站 (https://www.cns11643.gov.tw)」[2026-01-11 20:49] [全字庫屬性資料集對照表] https://data.gov.tw/dataset/5961
#此開放資料依政府資料開放授權條款 (Open Government Data License) 進行公眾釋出,使用者於遵守本條款各項規定之前提下,得利用之。
#下載前請務必詳閱政府資料開放授權條款:https://data.gov.tw/license
壓縮檔內容:
①CnsCj2026.1.9.cin
2026年1月版的全字庫倉頡(純全字庫倉頡)。
②CnsCj2026ExtRaw.cin
使BIG5的字元兼容於第三代倉頡傳統打法,更符合打字習慣。
下載:
我沒有使CnsCj2026ExtRaw.cin兼容於主流的「微軟倉頡」,只因為古有明訓:
拿懶叫去弄雞腿,只會弄髒懶叫,還會弄臭雞腿。
沒有留言:
張貼留言