转换mysql数据库以支持多种语言

时间:2011-07-17 14:41:04

标签: mysql internationalization

我目前有一个数据库,大多数表和字段都存储为latin1_swedish_ci。

我的问题是:

  1. 我应该对表及其字段使用utf8_unicode_ci吗?
  2. 表与字段的排序规则有什么区别?
  3. 我可以将所有字段/表格大量更改为utf8_unicode_ci吗? (如果那是正确的整理)
  4. 可以在字段/表格中发生任何数据丢失吗?
  5. 我想使用utf8的原因是因为我需要在数据库中存储中文和/或俄文字符。

1 个答案:

答案 0 :(得分: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以防止转换/双重编码。