删除隐藏的非ASCII字符[PHP或MySQL]

Ric*_*cky 4 php mysql ascii

我的数据库中隐藏的非ASCII字符(空格)有问题.

如何用普通空格替换它们并在插入之前转换它们以避免将来出现问题?

我仍然不能100%确定发生了什么,但我认为这是非ASCII空间.任何帮助追踪它的建议都会有所帮助.


这是发生了什么:

我有一个包含关键字的数据库,如果我搜索"测试关键字",则不显示任何内容.我知道"test keyword"在数据库中.

如果我搜索"test"或"keyword",它会显示出来.

如果我查询:

SELECT * FROM keywords WHERE keyword regexp '[^ -~]';(在这里找到)

它将显示"test keyword" - 给出结论,在"test keyword"中有一个非ASCII字符和空格.

Ric*_*cky 5

适用于PHP:

str_replace("\xA0", ' ', $keyword)
Run Code Online (Sandbox Code Playgroud)

现在我正在尝试替换数据库中的所有现有的.

我认为这应该有效,但事实并非如此:

update keywords set keyword = replace(keyword, char(160), " ") WHERE keyword regexp char(160);
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?