【问题标题】:Converting mysql database to support multiple languages转换mysql数据库以支持多种语言
【发布时间】:2011-07-17 14:41:03
【问题描述】:

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

我的问题是:

  1. 我应该对表及其字段使用 utf8_unicode_ci 吗?
  2. 表和字段的排序规则有什么区别?
  3. 我可以将所有字段/表批量更改为 utf8_unicode_ci 吗? (如果这是正确的排序规则)
  4. 字段/表格中是否会发生任何数据丢失?

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

【问题讨论】:

  • 您永远不需要想出使用 UTF-8 的理由。

标签: mysql internationalization


【解决方案1】:
  1. 我会去的。在使用多种语言时,几乎没有理由不使用 utf8。
  2. 如果未在各个列定义中指定列字符集和排序规则,则表字符集和排序规则将用作列定义的默认值。
  3. 如果您在字段上没有单独的排序规则/字符集,您可以编写一个简单的脚本来循环遍历所有表并发出ALTER TABLE tablename CONVERT TO CHARSET utf8;。如果您的字段具有自定义字符集/排序规则,则必须发出 MODIFY COLUMN 声明。您可以在转换后轻松识别查询information_schema.columns 表的用户。
  4. 是的,如果数据无法以 utf8 表示(鉴于您当前的排序规则,这不太可能),数据可能会中断。此外,如果您将 utf8 文本存储在实际上不是 utf8 的列中,则转换这些字段会导致类似双 utf8 编码的结果,这很不方便清理。如果您知道某列被错误地用于故事 utf8,您可以将其转换为 bin & 然后再转换为 utf8 以防止转换/双重编码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-15
    • 1970-01-01
    • 2011-04-07
    • 1970-01-01
    • 2015-05-16
    • 1970-01-01
    相关资源
    最近更新 更多