MT3.34 升级至 MT4.26 数据库中文乱码的解决
上次升级MT是两年前的事情了,过程很顺利,这次就没那么幸运,遇到了字符集的问题,此外还有一些插件的问题,而且都比较棘手。 字符集的问题与虚拟主机有一定关系,数据存储在Dreamhost主机的mysql数据库中,3.34版本的数据库使用Dreamhost上Mysql默认的字符集Latin1,升级完成,切换到MT4.26之后,登录MT后台管理,数据库中所有的中文是乱码(问号),尝试了一个从前(MT3.34)的解决方法: 在文件 cgi-bin/mt/lib/MT/ObjectDriver/DBI/mysql.pm 中增加一行: $driver->{dbh}->do("SET NAMES 'utf8'");,这句代码告诉数据库,客户端和数据库连接都使用utf-8编码,数据库返回的数据也使用utf-8编码,但于事无补,乱码依旧。临时学习了一下Mysql处理字符集的机制,找到了一个解决方法:先将升级后(MT4.26)的数据导出,然后新建一个utf-8编码的数据库,最后导入数据即可。 导出数据:$ mysqldump -h HOSTNAME -u USERNAME -p DBNAME...


