关于在MySQL中将ISO-8859-1数据转换为UTF-8的建议


Advice on converting ISO-8859-1 data to UTF-8 in MySQL

我们有一个非常大的InnoDB MySQL 5.1数据库,所有表都使用latin1_swedish_ci排序规则。我们希望将应该在ISO-8859-1中的所有数据转换为UTF-8。将排序规则更改为utf8_general_ci的效果如何(如果有的话)?

我们最好写一个脚本来转换数据并插入到一个新表中吗?显然,我们的目标是将重新编码时丢失任何数据的风险降至最低。

编辑:我们确实有重音字符、英镑符号等。

如果数据当前仅使用拉丁字符,而您只是想将字符集和排序规则更改为UTF8,以便将来能够添加UTF-8数据,那么简单地更改字符集和排列规则应该没有问题。当然,我会先在表格的副本中做这件事。

大约一周前,我不得不做同样的任务(ö, ä, å问题)

  1. 创建了一个dump.sql
  2. 搜索所有CHARSET=latin1并将其替换为CHARSET=utf8(在dump.sql中)
  3. 搜索并替换所有COLLATE=latin1_swedish_ciCOLLATE=utf8_unicode_ci(在dump.sql中)
  4. 创建了一个排序规则为utf8_unicode_ci的新数据库
  5. 导入dump.sql
  6. alter database MY_DB charset=utf8;修改了数据库的charset

它在上运行得很好

注意:在Mike Brant的评论之后,我认为最好手动搜索并替换您特别想要的字段。或者,您可以简单地对每个字段使用ALTER,而不需要dump.sql。在我的情况下,它没有做出太大的改变,因为我的大多数字段都需要使用utf编码的