2011-07-17 38 views
1

我目前有一个数据库,大多数表和字段存储为latin1_swedish_ci。转换MySQL数据库以支持多种语言

我的问题是:

  1. 我应该使用utf8_unicode_ci的表和他们的田地?
  2. 表格与字段的排序规则有什么区别?
  3. 我可以批量更改所有字段/表为utf8_unicode_ci? (如果这是正确的整理)
  4. 可以在字段/表中发生任何数据丢失?

我想使用utf8的原因是因为我需要在数据库中存储中文和/或俄文字符。

+2

你永远不需要拿出一个使用UTF-8的理由。 –

回答

2
  1. 我会为它付出。在使用多种语言时,不会使用utf8的原因很少。
  2. 如果未在单个列定义中指定列字符集和归类,则表字符集和归类将用作列定义的缺省值。
  3. 如果您在字段中没有单独的排序规则/字符集,则可以编写一个简单的脚本,循环遍历所有表并发出ALTER TABLE tablename CONVERT TO CHARSET utf8;。如果您的字段具有自定义字符集/归类,则必须发出MODIFY COLUMN声明。转换后,您可以轻松识别查询information_schema.columns表的人。
  4. 是的,如果数据不能用utf8表示(根据目前的排序规则,这不太可能),数据可能会中断。另外,如果您将utf8文本存储在实际上不是utf8的列中,那么转换这些字段会导致类似于utf8双重编码的操作,这对于清理来说是相当不方便的。如果你知道某个列被错误地用于讲述utf8,你可以将它转换为bin &然后转换为utf8以防止转换/双重编码。
+0

谢谢,我认为这是一件好事。 –