最近把一个比较老的discuz系统(X2.0)由GBK转成了UTF-8,数据库表和模板转换编码进展的都还比较顺利。
弄完发现首页的数据调用一部分无法显示,这些不显示的到后台看,会发现数据调用模板也是空白的。
剥茧抽丝,找到pre_common_block_style表,发现template字段里,序列化serialize 的内容里有包含中文的,由于在gbk编码中,一个中文是2个字节,在UTF-8下是3个字节,所以按原来的序列化结果转码无法正常解析了。
需要处理的数据不多,就没有写程序批量执行。手动更改数据后,问题得到解决。