ProcessWire后台中文乱码的问题

在环境迁移中继上文提到的后又发现中文乱码的问题,一直在使用PW的DB Backups模块用来做数据备份恢复,检查了很久确定MySQL编码没任何问题,情况非常诡异,原先存储的中文字符用Navicat管理工具查询出来都很正常,但是在PW后台看到的是乱码,如果在后台新增的中文字符在后台系统中又显示正常,但是在数据库中显示的是问号。

尝试在config.php中添加了setlocale(LC_ALL,'en_US.UTF-8');也不管用,于是只能往版本差别上继续摸索,在系统中备份了新的文件用sublime text打开发现文件中新增的中文字符正常,旧的字符是乱码,于是我把旧的备份文件中的字符覆盖掉相同字符,居然恢复数据后是正常的,但是我对比了这俩文件它们的编码都是utf-8,应该也没问题。(这一段好像有点绕)

再后来我仔细检查了内容,比如这一段这俩字段的默认值,这是正常的备份出的sql文件

  `lat` float(10,6) NOT NULL DEFAULT 0.000000,
  `lng` float(10,6) NOT NULL DEFAULT 0.000000,

这一段不正常的

  `lat` float(10,6) NOT NULL DEFAULT '0.000000',
  `lng` float(10,6) NOT NULL DEFAULT '0.000000',

总之,笔者个人得出的结论是:MYSQL版本差别在导出的时候产生的细微差别在恢复时引起的字符错误。要解决也非常简单,统一一下编码和文件吧。

这种编码错误说实话真的挺头疼的,但愿我别在遇到了。(手动抓狂)

Post Comment