影子论坛

搜索
夜间模式◐

discuz!X3.4帖子主题包含生僻字/emoji等特殊字符主题变空白的解决方式

[复制链接]
管理员   admin  · 2019-9-23 23:47 · 显示全部楼层 · 阅读
经过各方面查找资料,发现这个时数据库编码的问题emoji是4字节 utf8只支持3字节  因此要更改数据库编码为utf8mb4

操作很简单 但是有风险。两种方式
第一种删库重建
1、备份现有数据库,通过工具和discuz本身两个途径备份两次最为妥善
2、关闭discuz 删除原有数据库
3、新建与原有数据库同名,同密码,但编码为utf8mb4的新库
4、导入备份文件
5、开启discuz 测试
基本上不会有问题,但是删库总会让人心惊胆战

我采用的是第二种方法
移形换影
1、备份现有数据库,两种方式都备份  ,保险起见
2、关闭discuz,
3、新建一个不同名称的数据库,编码为utf8mb4.
4、把数据库备份文件导入到新的数据库。
5、修改论坛数据库配置文件 连接到新数据库

修改文件如下

  1. config/config_global.php

  2. config/config_global_default.php

  3. config/config_ucenter.php

  4. config/config_ucenter_default.php

  5. uc_server/data/config.inc.php
复制代码

将这几个文件中的数据库信息更改为新的数据库信息就可以了
6、打开discuz测试

两种方式操作完后都要对数据库进行操作,表 pre_forum_post 中的subject和message字段要手动改成utf8mb4

以上两种方式都可以解决标题带有emoji而为空的问题

同时第二个方法  也适用于更换数据库名 或者更换数据库信息之类的

修改好后效果
TIM图片20190923234525.png




回复

使用道具 举报

倔强青铜Ⅲ   Mimick  · 2019-9-24 00:37 · 显示全部楼层
没想到都 9012 年了竟然还有人会踩到 MySQL 里 utf8 & utf8mb4 的坑 2333333333333
回复 支持 反对

使用道具 举报

管理员   shadow  · 2020-3-9 14:48 · 显示全部楼层
回帖测试?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表