之前收到几位博友的反馈,说他们发表的评论不是没有了就是少一段,还问是不是被我删掉了?博友们的评论我怎会舍得删呢,但是发广告和毫无营养的评论绝不手软,当时我是一头雾水不懂哪出了问题,

最近留意到挨踢路一篇文章提到emoji表情,回想几位博友当时反应的情况总算找出导致评论异常的原因了;

Typecho默认不支持emoji表情是由于编码的问题,只需要将默认的数据库编码utf8修改为utf8mb4即可,不过utf8mb4编码在PHP5.5以后才支持。

Emoji是一种在Unicode位于u1F601-u1F64F区段的字符。这个显然超过了目前常用的UTF-8字符集的编码范围u0000-uFFFF。在MySQL中,UTF-8只支持最多3个字节,而emoji是4个字节。这就导致如果你不修改数据库的话,typecho是无法支持Emoji表情的。

当然好消息是utf8mb4其实是完全兼容utf-8,修改后不会影响现有数据及后期数据。

1.修改数据库编码

在PhpMyadmin中选择typecho数据库,操作-->排序规则-->选择utf8mb4_unicode_ci然后执行。

2.修改表编码

执行以下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;

3.修改typecho配置文件config.inc.php

拉到最下面找到这一行

'charset'   =>  'utf8', 

修改为

'charset'   =>  'utf8mb4', 

Typecho就可以使用emoji表情了,赶紧评论试试吧,搜索emoji表情还真不少.

✨🎋🎍😀😃😄😁😆😅🤣😂🙂🙃😉😊😇🥰😍🚢✈️