我正在运行WordPress 4.1.1。我的网站位于NearlyFreeSpeech。
自从WordPress博客将信息编码到latin1
字符集。本周,我意识到我博客上的某些帖子(如:1-2-3) 没有显示日语字符——这些字符要么显示为问号,要么显示为æ-¥अœèèèèèè等字符串。
显然,这是一个编码错误。查看phpMyAdmin中的数据库,我的数据库中有许多表和列,它们的排序规则设置为latin1_swedish_ci
. 我试图通过以各种不同的方式将数据库更改为UTF-8来解决这个问题。他们都得到了完全相同的结果。
我尝试将数据库编码更改为UTF-8的方式:
使用UTF-8 Database Converter 插件遵循this guide 要导出数据库,请将“latin1”的所有实例替换为“UTF8”,使用SQL脚本将表和列转换为blob,然后转换为UTF-8文本(详细信息here)here)
Expected results:
我的网站看起来和上面一样,所有主题和设置都完好无损,但现在正确显示了日语字符。
Actual results for all of the above methods:
日语仍然不能正确显示。此外,数据库条目突然结束;例如,中的某些条目
post_content
缺少部分或大部分原始内容。自定义短代码,由短代码器插件定义并存储在
shortcoder_data
行输入
wp_options
, 因为
shortcoder_data
条目被突然截断。我的主题选项(包括自定义CSS和字体)似乎已重置或损坏,很可能是由于数据库条目的类似突然截断。
幸运的是,我有远见在一个重复的数据库上进行所有这些更改,所以我有一个备份,所有数据都完好无损。
当我比较post_content
对于原文,我注意到了一点:几乎所有被截断的字符串都以一个特殊字符开头。例如,一篇曾经读过:
今天天气宜人,72度,阳光明媚。
将在修改后的数据库中读取:
今天是愉快的72
我还没有浏览并找到所有被截短的帖子——我对mySQL一无所知,所以我必须手工完成,这将是一种耐心的锻炼。然而,在8篇被截短的帖子中,有6篇明显是在一个特殊字符处被截短的。
我需要做些什么来正确转换数据库,以便正确显示日语字符,而不会导致数据丢失?或者,如果没有完整的解决方案,我可以做些什么来正确诊断发生了什么?
非常感谢。
Update: Extra information
还有一些事情。
我以前在我的博客上有很多帖子,上面都显示了一些字符串,比如™m而不是我,天真而不是天真。如上所述,日语显示为æ-¥अœèèèèèèèèèèèèèèèèèèèèèèè等长字符串,而不是日本語. 我在看到它们的地方穿过并替换了这些字符串,将Ã′替换为适当的ï(例如)。
然而,我并没有捕捉到所有的帖子,我的数据库中还有一些帖子仍然保持着“天真”,而不是“天真”。
当我看到我修改过的数据库上的帖子时。。。它们显示正确。它们不会截断。所有的乱码字符都被无缝地翻译成了它们的“正确”对应物。甚至日本人也改变了信仰。
然而,在我返回并“更正”乱码的帖子中,在我有天真和不天真的帖子中,数据库中的内容在导入时被截断,如上所述。