筆記:此"巿"非彼"市"

最近處理資料遇到一個問題,明明看起來很像的兩個中文字串,範例如下:
高雄巿鼓山區河西一路1437號
高雄市鼓山區河西一路1437號
但是搜尋比對就是搜尋比對不到

用出絕招(HEXDUMP)之後才知道這兩個字不一樣。
上面的"巿" UNICODE編碼是 5dff (T2-213D)
上面的"市" UNICODE編碼是 5e02 (T1-464B)
上 http://unicode.org/charts/ 查了一下,兩的字顯示出來都是類似。

繼續追查下去,在詳記說明文件 http://www.unicode.org/charts/PDF/U4E00.pdf
看到幾個關鍵字:CJK,在 WIKI 中日韓統一表意文字 知道了 CJK是中日韓,還有引伸的CJKV,加上越南這四個有用到中文的國家。

往下翻,提到T1 T2的說明:
T1:  CNS 11643-1986第一字面,約八千字
T2:  CNS 11643-1986第二字面,約八千字

到這裡終於水落石出,某個資料來源用了比較罕見、上面那點垂直的"巿",所以電腦把他們當作不同字,但是人眼不特別看還看不出來。

所以在字串處理上又多一個對應字置換的環節,來處理相似字的問題。

順帶一提,之前看雨狗的網誌 http://raindog.pixnet.net/blog/post/33734339
提到類似的問題,雨狗的專業跟觀察力也非一般人啊!

參考資料:
Unicode官方:
WIKI:
CNS 11654標準 官方說明:
雨狗大的網誌:

留言

這個網誌中的熱門文章

RTC & CMOS 技術詳解

[自由網路] 如何取得 Google Drive (真實)外連位址 (Direct Link)