Typecho对emoji的支持取决于数据库的编码格式。只要数据库的编码格式为utf8mb4就可以正常使用了。如果编码格式是utf8,则需要进行编码格式的转化,否则在插入emoji后可能会造成数据丢失。
utf8mb4,即8-bit Unicode Transformation Format most bytes 4,其实就是为uft8增加支持兼容四字节unicode(也就是emoji的形式)的特性,所以从utf8转换到uft8mb4不会损失任何数据。
转换之前,首先确保MySQL版本大于等于5.5.3,然后通过命令行链接数据库(如果有phpmyadmin,那么可以跳过这一步,直接在控制台执行后续操作):
mysql -u root -p
use 你的数据库名;
注意不要遗漏了分号。随后运行以下命令:
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;
随后修改Typecho根目录的config.inc.php:
'charset' => 'utf8mb4'
到此为止,Typecho已经能够支持emoji了。
需要注意的是,出于性别平等和种族平等考虑,新的emoji规范中增加了对性别特征、肤色的自定义,最具代表性的就是Family这个emoji,三个人可以分别设置性别特征(无性别特征、男性特征、女性特征),以及肤色(六种肤色),现在还增加了四口之家的选项。如果为每种组合单独设立一个emoji,那会变得非常繁琐,所以现在通过多个emoji的组合来表示具有特征的emoji。比如黑人女性医生的emoji其实是由黑色+女性+医生组成,但不是所有设备都支持这一特性。如果需要插入此类emoji,可以尝试使用不支持调整emoji性别肤色的输入法键入,或者在网上找找旧版的emoji拷贝粘贴一下。