Mysql 混合内容的拉丁语-1到UTF-8转换

Mysql 混合内容的拉丁语-1到UTF-8转换,mysql,encoding,utf-8,Mysql,Encoding,Utf 8,最初,我们使用UTF-8编码运行一个数据库,我们不得不迁移到另一个错误地使用latin-1的服务器。问题是,大多数名称都包含特殊的外来字符,如果没有正确的编码,它们会变得怪异: 例如: 内齐河河流域 奥班 Eren KaragÃzlü 我能够使用以下查询将其转换回UTF: 选择convert(cast(convert(名称使用拉丁语1)作为二进制),使用UTF8)作为用户的名称 以上名称现在显示正确: 内齐赫·阿卡卡湖 LÜTFİchi OBAN 埃伦·卡拉戈兹吕 但是,以前编码为正确UTF-

最初,我们使用
UTF-8
编码运行一个数据库,我们不得不迁移到另一个错误地使用
latin-1
的服务器。问题是,大多数名称都包含特殊的外来字符,如果没有正确的编码,它们会变得怪异:

例如:

内齐河河流域 奥班 Eren KaragÃzlü

我能够使用以下查询将其转换回UTF:
选择convert(cast(convert(名称使用拉丁语1)作为二进制),使用UTF8)作为用户的名称

以上名称现在显示正确:

内齐赫·阿卡卡湖
LÜTFİchi OBAN
埃伦·卡拉戈兹吕

但是,以前编码为正确UTF-8的所有数据现在显示为
(NULL)

我的问题是,如何只转换断开的编码行,而保留正确编码的行不变?现在是“非此即彼”。问题是它们在顺序上是混合的,所以我不能用ID来区分它们

任何线索都会有帮助。谢谢


您是否可以选择coalesce(convert(…),name)

几周前我注意到了这一点,但没有报告它修复取决于具体情况:更多讨论: