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

时间:2012-07-17 15:55:35

标签: php mysql unicode utf-8 character-encoding

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

我们最好编写一个脚本来转换数据并插入新表吗?显然,我们的目标是尽量减少重新编码时丢失任何数据的风险。

编辑:我们确实有重音符号,符号等等。

2 个答案:

答案 0 :(得分:2)

如果数据当前仅使用拉丁字符,并且您只是想将字符集和排序规则更改为UTF8以便将来添加UTF-8数据,那么只需更改字符集和排序规则就没有问题。我当然会先在表格的副本中这样做。

答案 1 :(得分:1)

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

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

    它完美无缺

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