如何将现有mysql数据latin1编码为utf8\u general\u ci

如何将现有mysql数据latin1编码为utf8\u general\u ci,mysql,collation,Mysql,Collation,在过去,我的DB排序规则和表是latin1或类似的。并在我的数据库中存储了一些数据 但最近更改了我的数据库排序规则UTF8和表UTF8\u general\u ci,但我以前的数据仍然是拉丁1 我想将现有表数据转换为utf8\u general\u ci。如何解决???您是否发现任何“问题”?列的编码和客户端中的编码不必相同;MySQL将动态转换 如果您想添加亚洲字符或表情符号,那么您确实需要utf8mb4(或至少utf8)。在开始转换之前,请讨论问题的范围。特别是,如果您看到的是“垃圾”,请查

在过去,我的DB排序规则和表是latin1或类似的。并在我的数据库中存储了一些数据

但最近更改了我的数据库排序规则UTF8和表UTF8\u general\u ci,但我以前的数据仍然是拉丁1

我想将现有表数据转换为utf8\u general\u ci。如何解决???

您是否发现任何“问题”?列的编码和客户端中的编码不必相同;MySQL将动态转换

如果您想添加亚洲字符或表情符号,那么您确实需要utf8mb4(或至少utf8)。在开始转换之前,请讨论问题的范围。特别是,如果您看到的是“垃圾”,请查看以诊断问题

假设表中的数据编码正确

ALTER TABLE t CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci;
这里有7种可能的情况;你似乎有第一种情况:

如果你已经在latin1列中存储了表情符号,那么你就有了更糟糕的混乱;我们需要进一步讨论

术语:

  • 字符集是用来编码字符的位。例如:拉丁文1,utf8,utf8mb4
  • 排序规则是比较字符的方式,如
    WHERE
    ORDER BY
    。例如:拉丁文1\u通用\u ci、utf8\u通用\u ci、utf8mb4\u unicode\u 520\u ci`
latin1
可以处理所有西欧字符。
utf8
可以处理世界范围内的大多数字符。

utf8mb4
utf8
的超集,用于表情符号和一些汉字。

为什么要转换为
utf8\u general\u ci
。如果你想使用UTF-8,你必须使用
utf8mb4\u general\u ci
。似乎没有简单的方法来完成这项工作。您必须使用所选的编码模式创建另一个表,然后将数据插入其中。最后,您可能需要将这个新表的名称更改为您想要的任何名称。