1

一年前,我们将数据迁移到 MySQL。由于编码不匹配,许多奇怪的字符(Ã、ª、€ 等)被插入到记录中。我们想跟踪整个数据库中的所有这些字符。

我尝试了以下查询。

 select * from <table_name> where <field_name> regexp '[^a-zA-Z0-9&,$\'"() .-]'

它给了我除了 az、AZ、0-9、&、逗号、美元、单引号、双引号、括号、空格、句点、连字符之外的所有<field_name>条目.

但是要找到所有奇怪的字符需要很长时间,因为我们有大约 93 个表,每个表大约有 20 个字段。

有没有更好的方法来解决这个问题?

使用正确的编码设置再次重新导入不是一种选择,因为从那时起数据已经发生了很大变化。

4

1 回答 1

1

您提到的字符看起来像 utf-8 数据呈现,就好像它是 ASCII 或 Latin-1 八位字符。

这是关于如何找到问题的帖子。它比您的方法效果更好,并且在字符集匹配方面非常自律。

如何在 MySQL 中找到非 ASCII 字符?

您能否提供包含此垃圾的表之一的表定义?这样我们就可以看到表和列的字符集和排序规则设置。

于 2013-04-18T12:23:02.880 回答