Typecho中emoji表情不显示

2021-12-21 15:18:49 浏览数 (1)

Typecho 默认不支持 Emoji 表情,由于编码的问题而造成,我们只需简单两步即可让 typecho 支持 emoji 表情评论,只要将默认的数据库编码 utf8 修改为 utf8mb4 即可。

更改过程

1.修改评论内容字段的编码

使用数据库管理工具,找到 typecho_comments 评论表的 text 字段,将该字段的编码由 utf8_general_ci 改为 utf8mb4_general_ci 。

2.修改数据库配置文件

打开网站根目录数据库配置文件 config.inc.php ,将 charset 的值由 utf8 改为 utf8mb4 。

代码语言:javascript复制
$db = new Typecho_Db('Pdo_Mysql', 'typecho_');
$db->addServer(array (
  'host' => '',
  'user' => '',
  'password' => '',
  'charset' => 'utf8mb4',
  'port' => '',
  'database' => '',
), Typecho_Db::READ | Typecho_Db::WRITE);
Typecho_Db::set($db);

成功显示了,真不错。

然后发现在文章中带emoji表情会显示成?,毋容置疑,肯定也是编码问题,干脆直接把几个表的编码全改成utf8mb4得了。

代码语言:javascript复制
alter table typecho_comments convert to character set utf8mb4 collate utf8mb4_unicode_ci;
alter table typecho_contents convert to character set utf8mb4 collate utf8mb4_unicode_ci;
alter table typecho_fields convert to character set utf8mb4 collate utf8mb4_unicode_ci;
alter table typecho_metas convert to character set utf8mb4 collate utf8mb4_unicode_ci;
alter table typecho_options convert to character set utf8mb4 collate utf8mb4_unicode_ci;
alter table typecho_relationships convert to character set utf8mb4 collate utf8mb4_unicode_ci;
alter table typecho_users convert to character set utf8mb4 collate utf8mb4_unicode_ci;

0 人点赞