解决 Typecho 不支持 Emoji 的方法

in Typecho with 0 comment

Typecho 原生确实不支持 Emoji 表情的存储和显示,主要是因为数据库默认使用的是 utf8 编码,它最多只支持 3 个字节的字符,而 Emoji 表情属于 4 字节字符,需要 utf8mb4 编码支持。
emoji.jpeg
修改数据库字符集为utf8mb4(推荐)
这是最彻底和稳定的解决方案,适用于所有输入方式(包括插件、评论、文章等)。

#### 步骤如下:

1.修改数据库编码

登陆phpMyAdmin,选择Typecho网站的数据库,切换到SQL标签。将 Typecho 使用的数据库(及其中所有表)的字符集改为 utf8mb4。file-20250530182215975.png
然后执行:ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;file-20250530182759737.png

ALTER TABLE `typecho_access` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
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;

确认每个表的字符集为utf8mb4。
file-20250530182924616.png

2.修改 config.inc.php 数据库连接设置

找到 config.inc.php 文件,修改数据库连接部分:
'charset' => 'utf8',修改为:'charset' => 'utf8mb4',

3.修改数据库驱动设置(可选)

如果你使用的是 MySQL 5.5 以上版本(推荐 5.6+),utf8mb4 支持良好。

4.清理缓存(如有启用插件缓存)。

测试插入 Emoji,例如在文章或评论中输入 😊、🚀、🎉 看是否正常存储。

Responses
2016lengh.gif2016kun.gif2016db.gif2016baojin.gif2016jk.gif2016kb.gif2016qq.gif2016zj.gif2016qiao.gif2016am.gif2016kk.gif2016qd.gif2016gg.gif2016lh.gif2016wq.gif2016gz.gif2016zhh.gif2016ll.gif2016shuai.gif2016kel.gif2016zk.gif