Typecho 原生是不支持 emoji 表情的,比如:??

这样的一些表情符号呢,实际上又不是一张图片,你可以理解为是一种特殊的字体,这种字体的一个字就是一个表情,在互联网页面中能够呈现比较好看的效果。在默认为 utf-8 编码数据库中,不能支持保存这种表情,你一旦在分类目录名称或者文章内容中包含了这种表情,保存 typecho 的时候就会显示报错:Database Query Error

怎么办呢?

可以通过下述方法使数据库支持,原理是把数据库编码转为 utf8mb4 格式,这种格式就可以保存 emoji 表情啦,之前的编码不可以的原因是这种表情他们的编码长度比 utf-8 长,所以存不了。

解决办法
进入数据库,直接运行下列语句:

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,大约在 60 行:

/** 定义数据库参数 */
$db = new Typecho_Db('Pdo_Mysql', 'typecho_');
$db->addServer(array (
  ...
  'charset' => 'utf8mb4',  // 将原来的 utf8 修改为 utf8mb4
  ...
), Typecho_Db::READ | Typecho_Db::WRITE);
Typecho_Db::set($db);

保存该文件即可生效。

这样,你的文章内容或者分类的标题就可以保存包含 Emoji 的表情啦!

最后修改:2023 年 05 月 10 日
如果觉得文章有用,请随意赞赏