工作中有一箇中文字庫表,是前輩從其他地方導入的。最近使用的時候發現有些詞,比如“清白”,明明只有兩個字,卻只能用LIKE ‘%清白%’查出,直接=’清白’找不到。
第一反應,前後可能有空格。於是在PHPMyadmin中用MySQL的trim函數過濾了一下
update 字庫 set Vocabulary = trim(Vocabulary)
但返回的affected rows數居然是0
可以肯定不知道是哪個UTF8不可見字符混了進去,直接看又看不見,想個辦法讓它顯型。於是用到了MySQL的hex函數,把字符串的hex輸出來對比一下:
select hex('清白'), hex(Vocabulary), Vocabulary from 字庫 where Vocabulary like '%清白%'
這下一眼就看出正常字符串前多了個hex爲“EFBBBF”的字符,將這個十六進制數扔到windows自帶的計算器中換成十進制爲15711167,真兇確定,刪之:
update 字庫 set Vocabulary = REPLACE(Vocabulary, char(15711167),'')
affected rows居然有3000多,怪不得感覺老有些常用詞檢索不出來呢……
保險起見,再用了一次trim
update 字庫 set Vocabulary = trim(Vocabulary)
又冒出3個affected rows。