编码的字符最终出现在我的MySQL中

时间:2011-03-21 22:12:53

标签: php mysql character-encoding

我有编码问题 - 我将数据存储在MySQL表中。在做一些工作的时候,我桌子上的一个专栏收集了一些obles和否定标志;或者通常的钻石带有问号,取决于编码。而不是手动更改每一行,是否有一种快速的方法来搜索和销毁数据库中的字符?

我玩过我的浏览器设置以及使用UTF-8,Western 1252和ISO-8859-1。我对以前编码数据的方式感到满意,我只是想从数据库中删除不正确编码的数据。我尝试编写一个快速的PHP脚本来获取所有字符并替换它们,但我无法弄清楚它们甚至是什么。有什么想法吗?

以下是UTF-8中显示的字符     ¬†

1 个答案:

答案 0 :(得分:1)

我不知道你是否可以这样做但

UPDATE `table` SET column = replace(column, REGEXP '[\x00-\x1F\x80-\xFF]', '');

确保首先将其作为选择运行,或者在临时沙箱数据库中执行此操作。如果这在mysql中是合法的,我不知道。

我知道有第三方正则表达式库可以执行此操作但需要更改数据库。我不知道这些是如何运作的。

修改

你最好写一个小的PHP脚本来为你做这件事。上面的正则表达式将用于删除垃圾字符。

$data = preg_replace_all('/[\x00-\x1F\x80-\xFF]/', '', $data);

再一次,如果以前不清楚:不要盲目地粘贴我上面的SQL语句,因为我不知道实际会发生什么。