秦始皇二一四
停止思考是一种堕落

Discuz x3.4 的转码教程——gbk 转 utf8

首先,吐槽一些话,当年是以学习接触 php 为目的加上了解下一些网络、网站知识,所以拿 discuz+wordpress 作为入门学习对象,就好比对于 C++的学习我使用 TC(TrinityCore) 魔兽世界模拟器作为实际接触项目一样,数年前 (2014 年之前) 我第一次接触 discuz 的时候,为啥要选择 GBK 编码,而不是 utf8?(也许这就是成长吧……233)。

然后,总感觉 discuz 有点人走茶凉的味道在那……现在各种轻论坛概念和相关产品出现,比如说测试体验的 discourse、flarum 等等,加上近期官方论坛以人手问题,把应用分发、支持等分发给了类似于粉丝站点一般,似乎成为了弃儿,而现在 discuz 也在码云上公开代码进行迭代更新 (当然 php 其实几乎不存在什么可加密可隐藏的代码部分)。

最近趁公司托管的一个论坛更新,决定也把自己的论坛作为练手进行一个更新,由于前段时间 (好吧去年……) 整个底层的升级换代,之前的 discuz 也没继续维护,所以就临时备份屏蔽了,关于升级公告可见:网站内核版本的升级与公告

下面,言归正传,对于这次升级做的事情说说:

1、首先访问码云下载官方的完整内容,链接是:https://gitee.com/ComsenzDiscuz/DiscuzX

2、根据官方教程 (https://gitee.com/ComsenzDiscuz/DiscuzX/wikis/%E5%8D%87%E7%BA%A7%E6%96%B9%E6%B3%95?sort_id=9978) 备份自己的文件,除了 config、uc-client、uc-server、data 文件夹及该文件夹里的内容以外,其他直接移入 old 文件夹中 (当然也可以完整备份下,包括数据库)

3、将 1 中的解压,upload 下文件全部上传到服务器上,遇到相同的进行覆盖

4、因为我之前的是 GBK,所以需要转码,首先转换数据库,GBK 到 UTF-8,这里我搜索到一个非常简单的方式,原文可参考这里,在这里我详细说明下,作为一个笔记:

4-1、phpmyadmin 打开数据库后,直接 sql,然后输入:

Select CONCAT( 'ALTER TABLE ', table_name, ' RENAME TO ', 111,';' )  FROM information_schema.tables  Where table_name LIKE 'pre_%';

这里说明下,最后一个 pre_是我们的 discuz 的默认前缀,如果你不是这样的,需要自行替换,其实这个原理是打印出所有 pre_开头的数据库,最后他们会变成形如以下内容的查询结果:

……
ALTER TABLE pre_xxx RENAME TO 111;
……

4-2、将上述查询结果导出后粘贴到文本里,然后我们进行批量替换,把 RENAME TO 111 替换为 DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci,最后应该是类似这样的:

…… 
ALTER TABLE pre_xxx DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci; 
……

4-3、将 4-2 内容复制到 phpmyadmin 的论坛数据库里的 sql 里进行查询操作,稍等一会儿,就执行完毕了。

第四步中提醒几个点:

a. 可以不用 phpmyadmin,可以使用其他的 mysql 操作的数据库工具软件;

b.4-1、4-2 的结果可能外部有双引号/单引号,在执行 sql 查询时可能会报错,请也批量替换掉/或加上 (这可能受到某些工具软件影响);

c. 数据库操作前请先备份,整个数据库操作过程不要使用不同的软件操作;

d. 你可能在 4-1 时导出其他 pre 开头的数据表,请看情况剔除,因为那些不是论坛的数据表,请注意辨认。

5、修改论坛配置文件 config 下的和 uc-server/config.inc.php 中的数据库的编码,应该从 gbk 改为 utf8,另外注意的是 config/config_global.php 中的 output 节点的编码要填写 utf-8 而非 utf8(这与数据库的编码 utf8 有区别,不要搞混);

6、之后登录论坛后台刷新缓存即可;

7、重新安装插件、模板,这些内容在 source/plugin,template 中,请从旧的论坛数据提取,请注意如果本身没有 utf8 版本,需要自行转换,小心测试、更新、重新安装相应插件即可。

以上就是整个转换过程,踩过的坑。

赞 (0) 打赏
版权声明:本文采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 (CC BY-NC-SA 4.0) 进行授权
文章名称:《Discuz x3.4 的转码教程——gbk 转 utf8》
文章链接:https://www.qyh.name/325/discuz-x3-4%e7%9a%84%e8%bd%ac%e7%a0%81%e6%95%99%e7%a8%8b-gbk%e8%bd%acutf8/
本站资源仅供个人学习交流,请于下载后 24 小时内删除,不允许用于商业用途,否则法律问题自行承担。

觉得文章有用就打赏一下

非常感谢你的打赏,我们将继续努力提供更多优质内容,让我们一起创建更加美好的网络世界!(注意:私密文章打赏不代表可以获得查看权限)

支付宝扫一扫

微信扫一扫