Home  >  Article  >  Database  >  MySQL中修理特殊不可见uft8字符

MySQL中修理特殊不可见uft8字符

WBOY
WBOYOriginal
2016-06-07 16:55:592181browse

工作中有一个中文字库表,是前辈从其他地方导入的。最近使用的时候发现有些词,比如ldquo;清白rdquo;,明明只有两个字,却只能

 

工作中有一个中文字库表,是前辈从其他地方导入的。最近使用的时候发现有些词,,比如“清白”,明明只有两个字,却只能用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。

linux

 

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn