Typecho 原生确实不支持 Emoji 表情的存储和显示,主要是因为数据库默认使用的是 utf8 编码,它最多只支持 3 个字节的字符,而 Emoji 表情属于 4 字节字符,需要 utf8mb4 编码支持。
修改数据库字符集为utf8mb4(推荐)
这是最彻底和稳定的解决方案,适用于所有输入方式(包括插件、评论、文章等)。
#### 步骤如下:
1.修改数据库编码
登陆phpMyAdmin,选择Typecho网站的数据库,切换到SQL标签。将 Typecho 使用的数据库(及其中所有表)的字符集改为 utf8mb4。
然后执行:ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
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。
2.修改 config.inc.php 数据库连接设置
找到 config.inc.php 文件,修改数据库连接部分:'charset' => 'utf8',
修改为:'charset' => 'utf8mb4',
3.修改数据库驱动设置(可选)
如果你使用的是 MySQL 5.5 以上版本(推荐 5.6+),utf8mb4 支持良好。
4.清理缓存(如有启用插件缓存)。
测试插入 Emoji,例如在文章或评论中输入 😊、🚀、🎉 看是否正常存储。
本文由 Qyet 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: May 30, 2025 at 06:58 pm