让Typecho支持Emoji表情
之前收到几位博友的反馈,说他们发表的评论不是没有了就是少一段,还问是不是被我删掉了?博友们的评论我怎会舍得删呢,但是发广告和毫无营养的评论绝不手软,当时我是一头雾水不懂哪出了问题,
最近留意到挨踢路一篇文章提到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表情还真不少.
✨🎋🎍😀😃😄😁😆😅🤣😂🙂🙃😉😊😇🥰😍🚢✈️
我博客里没有加,反正都能用输入法打出来?
这个程序默认不支持,加了会显示问号…现在修改了数据库就可以显示
现在typecho基本不更新了。我的经常被spam注入,貌似也没太好的处理方法
据可靠消息称,夏季typecho会推出新的版本…
是的。改了数据库后唯一的缺憾是以前的珍贵emoji都会没有。这是几年前我经历过的。
这样?之前不支持就算有也是显示❓吧…