Typecho 默认建立的数据库编码是 utf8,字符的最大长度为3个字节,而 emoji 需要4个字节。所以在发表文章或用户评论时会遇到数据库查询之类的错误。只需改成 utf8mb4 编码即可。

注意:MySQL 版本至少需要 5.5.3。

执行以下 SQL 语句——

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;

如果有别的表,如友情链接插件可能会创建 typecho_links 表,也一并写进去转换吧。如果安装时改过前缀,也只需对以上语句做相应修改。

再修改 config.inc.php 中规定的数据库编码:

'charset' => 'utf8mb4',

完。演绎自:AD's Blog,原作者是 journey.ad。