濾掉 Unicode Private Use 的字

整理生物俗名詞庫時,發現資料來源塞了很多前人自造的字,放在 Private Use Areas,很多程式遇到這類字元就爛掉,所以不得不把它們濾除。

因為在 Unicode 以及衍生的一系列編碼,這樣的私用造字是合規範的,所以原本以為用 iconv 或 Ruby 的 encode 把 UTF-8 先轉 UTF-16、再轉回 UTF-8 這樣「過」一次水可以搞定,結果這些字還是好端端地在那邊。

如果用 Big5 這個字收錄太少的編碼來濾,又會濾掉太多無辜的字元,所以轉個彎,想到用 EUC-TW 來濾,就可以取得折衷。

最後再用 diff 查看過濾前後的差異,找到真正是私用造字的所在,予以編修,這樣比起用工人智慧直接掃讀整份文件要好辨識得多,錯漏的地方也就少了。

CC BY-SA 4.0 This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

Leave a Reply

Your email address will not be published. Required fields are marked *