首先我的环境是Discuz X2.5 GBK,UCenter 1.6.0 GBK。
随着自行开发的程序增加,UTF8编码的使用量超过了GBK,不想再写两者的转换了,于是就下决心换掉GBK。
首先,自然是备份数据库和整个文件目录。我用了简单暴力的备份方法,先service mysqld stop然后复制走数据库所在的文件夹再打开服务,万一要恢复备份就关掉mysql,覆盖文件,再打开就行。
关闭Discuz。
然后连接上mysql,执行
Select CONCAT( 'ALTER TABLE ', table_name, ' RENAME TO ', 111,';' ) FROM information_schema.tables Where table_name LIKE 'pre_%' AND table_schema ="DISCUZ_DB";
pre_%是DZ表前缀,DISCUZ_DB是要转换的DZ所在的数据库。
将返回数据粘贴进记事本,查找并替换“RENAME TO 111”为“DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci”
然后执行替换完毕的SQL语句。
上传UTF8的DZ文件。
更新所有缓存(数据,模板,DIY模板)
如果应用名称乱码,只要随便找个应用卸载或者安装一次即可。
我这里目前还有一个应用中心报“该应用不适用您的网站”的bug,打算升级到X3.1试试能不能自动修复
记得修改config/config_global.php和config/config_ucenter.php中定义的编码
$_config['output']['charset'] = 'utf-8';
这里要注意,是utf-8而不是utf8,否则插件会无法安装
UCenter的更换方式和DZ几乎相同,只是
Select CONCAT( 'ALTER TABLE ', table_name, ' RENAME TO ', 111,';' ) FROM information_schema.tables Where table_name LIKE 'pre_%' AND table_schema ="DISCUZ_DB";
这句的pre_%改成UCenter的前缀即可。