Typecho建数据库的时候使用utf-8,utf-8是不支持Emoji表情的,要想数据库支持Emoji表情,就得使用utf8mb4编码来支持,于是我们需要修改已有数据库的编码格式,好消息是utf8mb4是utf-8的超集,完全兼容utf-8,修改后,不会影响现有数据。

修改数据表编码

使用PHPAdmin或命令行连接MySQL数据库:

mysql -u root -p

进入MySQL后切换到Typecho的数据库:

use <typecho>;

执行以下SQL语句,修改Typecho数据库中表的编码格式为utf8mb4:

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配置

修改charset的值为utf8mb4

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

修改完后去文章里面输入一个表情试试:???