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。
我把原来的表情插件关了,反正这里有 emoji 就行,也不需要贴图(我才不会开放呢)。原来就看到过 Typecho 不能用 emoji 的问题了,但是当时看的是后台发文章有问题,没注意用户评论会失败。另外,我也忽视了 emoji 的风速流行。?
???导火索在此!???