【问题标题】:How to convert latin1_swedish_ci data into utf8_general_ci?如何将 latin1_swedish_ci 数据转换为 utf8_general_ci?
【发布时间】:2012-09-27 05:41:21
【问题描述】:

我有一个 MySQL 数据库,所有表字段排序为

latin1_swedish_ci

它已经存储了近 1000 条记录,现在我想将所有这些数据转换为

utf8_general_ci

这样我就可以显示任何语言的内容。我已经将字段排序规则更改为 utf8_general_ci 但这不会将所有旧记录 CONVERT 转换为 utf8_general_ci

【问题讨论】:

    标签: php mysql character-encoding


    【解决方案1】:

    一件有趣的事。

    如果表中的字符集编码正确,安树建议的CONVERT TO CHARSET和CONVERT()/CAST()都可以正常工作。

    如果由于某种原因 latin1 列包含 utf8 文本,CONVERT() 和 CAST() 将无法提供帮助。我用那个设置“弄乱”了我的数据库,所以花更多的时间来解决这个问题。

    要解决此问题,除了字符集转换之外,还需要进行一些练习。

    1. “难点”是从转储中重新创建数据库,该转储将通过控制台进行转换
    2. “简单一”是逐行或逐表转换:
    INSERT INTO UTF8_TABLE (UTF8_FIELD)
    SELECT convert(cast(convert(LATIN1_FIELD using latin1) as binary) using utf8)
      FROM LATIN1_TABLE;

    基本上,这两种情况都会将字符串处理为原始符号,然后再进行正确的编码,simple convert(field using encoding) from table; 命令不会发生这种情况。

    【讨论】:

    • 您也可以进行更新:update TABLE_NAME set COLUMN_NAME = convert(cast(convert(COLUMN_NAME using latin1) as binary) using utf8); 请记住执行一次!
    【解决方案2】:

    导出您的表格。 放下桌子。 在编辑器中打开导出文件。 在创建表结构的位置手动编辑它。

    旧查询:

    CREATE TABLE `message` (
      `message_id` int(11) NOT NULL,
      `message_thread_id` int(11) NOT NULL,
      `message_from` int(11) NOT NULL,
      `message_to` int(11) NOT NULL,
      `message_text` longtext NOT NULL,
      `message_time` varchar(50) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    

    新查询:(假设您要更改 message_text 字段。)

    CREATE TABLE `message` (
      `message_id` int(11) NOT NULL,
      `message_thread_id` int(11) NOT NULL,
      `message_from` int(11) NOT NULL,
      `message_to` int(11) NOT NULL,
      `message_text` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
      `message_time` varchar(50) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    

    保存文件并导入回数据库。

    【讨论】:

    • 这是对我有用的最短和最危险的路线
    猜你喜欢
    • 1970-01-01
    • 2012-04-12
    • 1970-01-01
    • 2019-12-05
    • 1970-01-01
    • 2011-06-13
    • 2011-10-02
    • 2015-07-28
    • 2011-04-27
    相关资源
    最近更新 更多