avatar
@bangbang93

Discuz&Ucenter手动更换编码

10/19/2013, 11:27:45 PM

首先我的环境是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的前缀即可。