去除mysql 裏不可見字符

工作中有一箇中文字庫表,是前輩從其他地方導入的。最近使用的時候發現有些詞,比如“清白”,明明只有兩個字,卻只能用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。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章