Typecho 默认不支持 Emoji 表情,由于编码的问题而造成,我们只需简单两步即可让 typecho 支持 emoji 表情评论,只要将默认的数据库编码 utf8 修改为 utf8mb4 即可。
更改过程
1.修改评论内容字段的编码
使用数据库管理工具,找到 typecho_comments 评论表的 text 字段,将该字段的编码由 utf8_general_ci 改为 utf8mb4_general_ci 。
2.修改数据库配置文件
打开网站根目录数据库配置文件 config.inc.php ,将 charset 的值由 utf8 改为 utf8mb4 。
$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得了。
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;