筆記:此"巿"非彼"市"
最近處理資料遇到一個問題,明明看起來很像的兩個中文字串,範例如下:
高雄巿鼓山區河西一路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標準 官方說明:
雨狗大的網誌:
留言