【发布时间】:2025-11-29 06:20:18
【问题描述】:
大家好,有没有一种安全的方法可以将表格从 latin1_swedish 转换为完全 utf8?
谁能给我解释一下安全操作的步骤是什么?
(也许使用 phpmyadmin 不知道)
【问题讨论】:
标签: mysql unicode collections utf-8
大家好,有没有一种安全的方法可以将表格从 latin1_swedish 转换为完全 utf8?
谁能给我解释一下安全操作的步骤是什么?
(也许使用 phpmyadmin 不知道)
【问题讨论】:
标签: mysql unicode collections utf-8
我假设 latin1_swedish_ci 是您的数据库服务器的默认排序规则。在这种情况下,我使用以下排序规则:
这个问题可以有多种解决方案,但以下解决方案在某些最坏的情况下也适用于我。
步骤:
用旧表中的数据填充新表,使用CONVERT。
--复制表结构
CREATE TABLE `table_name` LIKE `old_table_name`;
--随意更改排序规则
ALTER TABLE `table_name`
改变`column_name1` `column_name1` VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL,
改变`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`)
选择`id`,
CONVERT(CONVERT(_latin1 `column_name1` USING binary) USING utf8) collate utf8_unicode_ci,
CONVERT(CONVERT(_latin1 `column_name2` USING binary) USING utf8) collate utf8_unicode_ci,
`column_name3`
FROM `old_table_name`
【讨论】:
charset 和collation。我不确定在转换为 utf8 或从 utf8 转换时有什么具体的陷阱,但如果出现任何问题,备份应该可以很好地为您服务。
【讨论】:
$dbname DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci"); $res = mysql_query("显示来自$dbname的表格"); while($row = mysql_fetch_row($res)) { $query = "ALTER TABLE {$dbname}.{$row[0]} CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; mysql_query($查询); $query = "ALTER TABLE {$dbname}.{$row[0]} DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci";