关于将MYSQL数据库及其数据从拉丁语转换为UTF-8的详细说明。有太多不同的信息
您能不能提供一种最好的方法,不仅可以转换mysql数据库及其所有表,从latin1_swedish_ci到UTF-8,还可以转换这些表的所有内容?我一直在研究整个堆栈以及其他地方,建议总是不同的 有些人建议只在表和数据库上使用以下命令:关于将MYSQL数据库及其数据从拉丁语转换为UTF-8的详细说明。有太多不同的信息,mysql,utf-8,latin1,Mysql,Utf 8,Latin1,您能不能提供一种最好的方法,不仅可以转换mysql数据库及其所有表,从latin1_swedish_ci到UTF-8,还可以转换这些表的所有内容?我一直在研究整个堆栈以及其他地方,建议总是不同的 有些人建议只在表和数据库上使用以下命令: ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8_unicode_ci; ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 COLLATE
ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
其他人说这只是改变了数据库和表,而不是内容
其他人建议转储数据库,创建一个具有正确字符集和排序规则的新表,并将旧数据库导入该表。这实际上也转换了数据吗
mysqldump --skip-opt --set-charset --skip-set-charset
其他人建议在导入之前对转储的数据库运行iconv?这是真的需要,还是导入UTF-8DB进行转换
最后,其他人建议修改数据库,将char/blog表转换为二进制,然后再转换回来
有这么多不同的方法,它已经变得非常混乱
有人能提供一个简明的分步说明,或者给我指一个,关于如何将我的拉丁DBs及其内容转换为UTF-8?如果有一个脚本可以根据数据库自动执行此过程,则更好
提前感谢。这里是Moodle社区的一个例子: (向下滚动至“已解释”。) 作者首先做一个SQL转储,这是一个大的SQL文件。然后他复制文件。之后,他用
sed
对复制的文件进行编码更正。最后,他将复制并更正的SQL转储文件导入到数据库中
我可以推荐这一点,因为通过这一个步骤,很容易检查它们是否做对了。如果出了问题,就回到最后一步,换一种方式试试 使用MySQL工作台来处理这个问题
这是两个不同的问题,经常被混为一谈:
sjis
作为编码可能比utf8
高效得多,并为您节省一点磁盘空间
列编码不会以任何方式影响数据库输入和输出的编码数据。这是一个单独的设置,即连接编码,每次连接到数据库时都会为每个客户机建立连接编码。MySQL将根据需要在连接编码和列/表字符集之间动态转换数据。您可以使用utf8
连接连接到数据库,将其发送到sjis
列的日文文本,MySQL将动态地从utf8
转换到sjis
(并在退出时反向转换)
现在,如果你把连接编码搞砸了(这种情况经常发生),并且你插入的文本编码与指定的连接编码不同(例如,你的连接编码是latin1
,但你实际上发送了UTF-8编码的数据),那么你在数据库中存储垃圾,你需要恢复它。如果这是你的问题,请参阅
但是,如果您的所有数据都是桃色的,并且从现在开始您只需要告诉MySQL以不同的编码存储数据,那么您只需要:
ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
MySQL将当前数据从其当前字符集转换为新的字符集,并将未来的数据存储在新的字符集中。就这些