本站首页 返回顶部 关于博主

WordPress突现乱码的修复备忘

PDF版
最近两天,访问网站,发现全是乱码。
很困惑,除了系统自动升级,写文章,最近基本没有更新过网站,是哪里出了问题?我初步估计,大概是浏览器的语言设置有问题吧。
检查浏览器Chrome和Edge的语言设置,都是中文;wordpress的编码是UTF-8,看来不是语言或编码设置的问题,浏览器本身也没有问题。

排除了浏览器的问题,下一步得怀疑数据库了。
先尝试简单粗暴的方法:恢复备份数据,选择把网站程序和数据恢复到5天之前,仍旧是乱码。可是,我明明记得5天前可以正常显示的。由此可见,备份数据也坏了。

网站乱码
连接到数据库,发现数据表中相关的字段果真变成了乱码,即使是备份表也是乱码。试着把其中的某些乱码字段改正确的文字,刷新网页,其对应的文字显示正常了。这说明:数据库的编码出了问题,包括备份表在内。
我使用的数据库是服务商提供的,现在有两种可选方案:1.联系服务商帮忙修复;2.自己修复。思考了一下,自己修复吧,一方面沟通成本有点高,另一方面万一服务商把数据搞得更乱我就没辙了。

接下来需要弄清楚的是:现在的数据是什么编码,它是否能转成对应的中文。
感谢 乱码修复 这个网站,很快我查明当前编码是Windows-1252,而我需要的编码是UTF-8。
难道数据表的字段被修改成了Windows-1252?如果是这样,那么把它修改成UTF-8就可以了。检查,发现数据表字段的编码设置已经是UTF-8,也就是说,数据编码设置的是UTF-8,但实际是Windows-1252。修改编码设置行不通。

接下来,我只能把自己来文字从Windows-1252转换成UTF-8了。步骤如下:
  1. 备份数据;
  2. 确定哪些表的哪些字段需要转码;
  3. 写一段程序,实现这样的功能:把需要转码的数据从表中读出来,然后把它从Windows-1252转换成UTF-8,把它写回到数据库中。

先写代码,测试,转码,前后耗费3个多小时,网站终于显示正常了。
收工。

至于发生这种情况的原因,不得而知。近段时间我没有修改过网站,后台监控显示也没有异常访问。猜测是服务商升级数据库时出了问题吧。




请你留言

Protected with IP Blacklist CloudIP Blacklist Cloud