让 Typecho 支持原生 emoji 表情

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。

Try Ctrl+Enter :)

已有 2 条评论

  1. 闪闪的星

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

    闪闪的星 December 7, 2016 | 1:03:05 pm回复
  2. Mag

    ???导火索在此!???

    Mag December 8, 2016 | 6:43:42 pm回复