数据库恢复错误,编码问题

时间:2011-03-21 作者:Jonathan

我把W3 Total Cache的设置搞砸了(试图将所有媒体导入我的媒体库,结果不太好,断开了所有图片的链接)。因此,我对数据库进行了最新备份,在phpmyadmin中复制/粘贴了\\u post和\\u posteta表。它按预期带回了链接和图片,但现在所有法语字符(a、é、è等)都没有正确显示。

我从插件WP-DBManager获取了备份,该插件似乎无法正确处理UTF-8。纠正问题的最快方法是什么?

谢谢

有关详细信息,请编辑:SQL备份标头为

DROP TABLE IF EXISTS `hojd_posts`;
SET @saved_cs_client     = @@character_set_client;
SET character_set_client = utf8;
然而,我的sql命令中直接出现了那些编码错误的字符(例如:français代表“français”)。。。

3 个回复
最合适的回答,由SO网友:Jan Fabry 整理而成

如果您有一个具有良好编码支持的文本编辑器,您可能能够解决这个问题。这样,您可以在拉丁语1和UTF-8编码之间切换,直到找到正确的组合。我使用SubEthaEdit 它可以转换文件,但也可以在更改编码时重新解释文件。

这个ç 应编码为c3 a7 在UTF-8中,将其视为字节。这里可能发生的情况是,文件首先被解释为拉丁文1,其中c3 a7 方法ç, 然后保存为UTF-8,其中ç 另存为c3 83 c2 a7. 你想要c3 a7 版本

回到一个好的ç 就是以UTF-8格式打开文件,将其另存为拉丁文-1,然后再次以UTF-8格式打开。

完成此操作后,您可以将文件导入MySQL,但请指定它为UTF-8,否则MySQL可能会尝试将其解释为拉丁文1,您仍然可以使用ç 字符。

SO网友:Roman

我对德国umlauts也有同样的问题。使用phpmyadmin的db导出也出现了此问题。我的解决方案是使用命令行工具mysql和参数“-default character set=“utf8”导出数据库。

另一种方法是,如果您无法访问linux shell:Install and use MySQLDumper

SO网友:Chris_O

旧的WordPress数据库甚至更新的数据库的一个常见问题是,数据库表被设置为latin-1,但内容实际上被编码为UTF-8。如果您尝试导出为UTF-8,MySQL将尝试将(假定)拉丁语-1数据转换为UTF-8,从而产生双编码字符,因为数据已经是UTF-8。

解决方案是将表导出为拉丁语-1。由于MySQL认为它们已经是拉丁语-1,所以它将直接导出。

将字符集从“latin1”更改为“utf8”由于转储的数据在导出过程中没有转换,因此它实际上是UTF-8编码的数据。

将新表创建为UTF-8如果您的Create table命令位于SQL转储文件中,请将字符集从“latin1”更改为“utf8”。

正常导入数据。由于转储文件中有UTF-8编码的数据,转储文件中声明的字符集现在是UTF-8,并且要导入的表是UTF-8,因此一切都会顺利进行。

结束

相关推荐

Corrupt Wordpress Database

我认为这是最奇怪的文字印刷问题。一个拥有大量帖子数据库的客户网站已经有了自己的想法。前一分钟一切似乎都很好,接下来的帖子、类别和标签都不见了。此时仪表板告诉我9个类别中有2309个帖子,但当我单击admin中的categories链接时,列表中没有任何帖子。我可以在admin中看到所有帖子,但尽管它们过去被分配到类别并列出标签,但现在它们都“未分类”,没有标签。很明显,wordpress数据库在某种程度上已经损坏,但从哪里开始尝试修复呢!?以下是我迄今为止测试的内容:插件–我关闭了所有当前的插件。主题–我