将文本字段从latin1_swedish转换为utf8?

时间:2010-12-28 22:10:04

标签: mysql unicode collections utf-8

大家好,有没有一种方法可以将表从latin1_swedish转换为完全utf8?

有人可以解释一下安全操作的步骤是什么?

(也许使用phpmyadmin dunno)

2 个答案:

答案 0 :(得分:0)

  • 抓住Sqlyog Community Edition
  • 备份数据库。
  • 在需要编辑的表格上按F6键。
  • 如果需要,请在右下角停用“隐藏语言选项”复选标记。
  • 根据需要更改charsetcollation

我不确定更改到/从utf8的任何特定缺陷,但如果出现任何问题,备份应该对您有用。

答案 1 :(得分:0)

我认为 latin1_swedish_ci 是数据库服务器的默认排序规则。在这种情况下,我使用以下排序规则:

  • 数据库:默认值(latin1& latin1_swedish_ci)
  • 表:默认值(latin1& latin1_swedish_ci)
  • 专栏:utf8& utf8_unicode_ci无论何时需要默认值(latin1& latin1_swedish_ci)否则。

此问题可以有多种解决方案,但在以下最糟糕的情况下,以下解决方案也适用于我。

步骤:

  1. 将结构复制到新表。
  2. 改变charset&整理 表格字段为 utf8 & utf8_unicode_ci 分别为 需要的。
  3. 使用 CONVERT 在旧表格中填入数据。

    - 复制表格结构

    CREATE TABLE`table_name` LIKE`old_table_name`;

    - 根据需要更改排序规则

    ALTER TABLE`table_name`

    CHANGE`point_name1``column_name1`VARCHAR(100)CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL,

    CHANGE`column_name2``column_name2`VARCHAR(100)CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL;

    - 导入数据

    INSERT INTO`table_name`(`id`,`column_name1`,`column_name2`,`column_name3`)

    SELECT`id`,

    CONVERT(CONVERT(_latin1`column_name1`使用二进制文件)使用utf8)整理utf8_unicode_ci,

    CONVERT(CONVERT(_latin1`column_name2`使用二进制文件)使用utf8)整理utf8_unicode_ci,

    `column_name3`

    FROM`old_table_name`