Encoding 错误的MySQL导入,现在我们有垃圾显示代替utf-8字符

Encoding 错误的MySQL导入,现在我们有垃圾显示代替utf-8字符,encoding,utf-8,ascii,iso,Encoding,Utf 8,Ascii,Iso,我们从一个不同格式的备份恢复到一个新的MySQL结构(这是为UTF-8支持而正确设置的)。浏览器中显示了一些奇怪的字符,但我们不确定它们的名称,因此我们可以找到它们翻译成什么的主列表 我注意到,事实上,它们确实与特定的角色相关。例如: â„¢ always translates to ™ — always translates to — • always translates to · 我引用了这篇文章,这让我开始了,但这远不是一个完整的列表。要么我没有搜索正确的名称,要么这些从坏到好

我们从一个不同格式的备份恢复到一个新的MySQL结构(这是为UTF-8支持而正确设置的)。浏览器中显示了一些奇怪的字符,但我们不确定它们的名称,因此我们可以找到它们翻译成什么的主列表

我注意到,事实上,它们确实与特定的角色相关。例如:

â„¢ always translates to ™
— always translates to —
• always translates to ·
我引用了这篇文章,这让我开始了,但这远不是一个完整的列表。要么我没有搜索正确的名称,要么这些从坏到好的转换的“主列表”作为引用不存在

参考:

另外,当试图通过MySQL查询进行搜索时,如果我搜索–时,我总是让MySQL将其视为“a”。有没有办法调整我的MySQL查询,使它们更适合文字搜索?我们不太使用国际化,因此我可以安全地假设任何包含–字符的字段都被认为是有问题的条目,这需要通过我们正在构建的“fixit”脚本来解决。

而不是设计一个“fixit”脚本来检查和替换这些数据,我认为最好直接解决这个问题。看起来数据最初是以与UTF-8不同的格式存储的,因此当您将其放入为
UTF-8
设置的表中时,它会将文本弄乱。如果有机会,请返回原始备份以确定数据的存储格式。如果你不能做到这一点,你可能需要做一些尝试和错误,以找出数据的格式。然而,一旦你知道了这一点,转换就很容易了。阅读以下文章中有关修复的部分:

基本上,您要将列设置为
BINARY
,然后将其设置为原始字符集。这将使文本正确显示(检查是否使用了正确的字符集)。完成后,将列设置为
UTF-8
。这将正确转换数据,并纠正您当前遇到的问题