原来Typecho刚建立是不支持Emoji表情的,只要带了表情的评论都会被吃掉……

原因:由于Emoji就是一种在Unicode位于u1F601-u1F64F区段的字符。超过了默认的UTF-8字符集的编码范围u0000-uFFFF。在 MySQL 中,UTF-8只支持最多 3 个字节,而 emoji 是 4 个字节。
解决方案:更改数据库编码为utf8mb4。
注意:utf8mb4编码在PHP5.5以后才支持,php版本低于5.5的先切换版本再更改。

修改数据库编码

PhpMyAdmin中选择Typecho所用的数据库,我这里是blog

选择操作 -> 排序规则 修改为utf8mb4_unicode_ci ->执行

修改数据库表编码

直接修改表编码应该也是可以的,但我没有试过。
phpmyadmin03.jpg
这里在命令行运行以下语句:

alter table typecho_comments convert to character set utf8mb4 collate utf8mb4_general_ci;
alter table typecho_contents convert to character set utf8mb4 collate utf8mb4_general_ci;
alter table typecho_fields convert to character set utf8mb4 collate utf8mb4_general_ci;
alter table typecho_metas convert to character set utf8mb4 collate utf8mb4_general_ci;
alter table typecho_options convert to character set utf8mb4 collate utf8mb4_general_ci;
alter table typecho_relationships convert to character set utf8mb4 collate utf8mb4_general_ci;
alter table typecho_users convert to character set utf8mb4 collate utf8mb4_general_ci;

修改数据库配置文件

打开网站安装根目录下的 config.inc.php 文件,拉到最下方找到数据库信息配置区域,将编码utf8更改为utf8mb4,如图。
ReviseConfigincphp.jpg

参考资料:fiveFlowers - Typecho 开启 emoji 表情支持功能