使

使typecho支持emoji表情

肉松 笔记 2022-03-04

昨天一位博友提示说网站不支持emoji表情,肉松之前真的没有关注过这个细节。经过测试,确实不支持。

Emoji是一种在Unicode位于u1F601-u1F64F区段的字符,超过了目前常用的UTF-8字符集的编码范围u0000-uFFFF。在MySQL中,UTF-8只支持最多3个字节,而emoji是4个字节。所以typecho默认不支持emoji表情,是由于数据库编码的问题,MYSQL在5.5.3以后的版本中加入了utf8mb4支持,所以核心点是我们只需要将默认的数据库编码utf8修改为utf8mb4即可。

结合以上,本站的修改过程还是相对繁琐了一些,因为使用的是2015年购买的阿里云的虚拟主机,php和数据库的版本都比较低,先在主机管理界面把php版本从5.4升级到typecho推荐的5.6,然后将mysql从5.1升级到了5.7。

先备份了数据库,升级时会清空数据库,导入MYSQL备份文件后就可以按网上的教程修改了。

教程基本上分了两步,一、修改数据库,二、修改typecho配置文件。

第一步、修改数据库编码

进入PhpMyadmin,选择您的数据库,操作--》整理--》选择utf8mb4_unicode_ci。因阿里的MDB没有此项,不需要修改此项。

第二步、修改数据库表编码

第1种方法是使用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;

第2种方法是在phpmyadmin或者阿里的MDB界面手动修改表结构,字段选择utf8mb4,校验选择utf8mb4_unicode_ci

第三步、修改数据库配置文件

找到网站根目录下的config.inc.php,使用文本编辑器打开;
大约在第60行, 将 'charset' => 'utf8'修改为'charset' => 'utf8mb4'
修改好后保存文件。

此时typecho已经支持emoji表情了。

😀😁😂🤣😃😄😅😆😉😊😋😎😍😘🥰😗😙🥲😚☺️🙂🤗🤩🤔🤨😐😑😶😶‍🌫️🙄😏😣😥😮🤐😯😪😫🥱😴😌😛😜😝🤤😒😓😔😕🙃🤑😲☹️🙁😖😞😟😤😢😭😦😧😨😩🤯😬😮‍💨😰😱🥵🥶😳🤪😵😵‍💫🥴😠😡🤬😷🤒🤕🤢🤮🤧😇🥳🥸🥺🤠🤡🤥🤫🤭🧐🤓😈👿👹👺💀☠️👻👽👾🤖💩

PREV
纯css实现网页打字效果
NEXT
高速公路收费迷之行为