typecho 博客建立完成之后,会发现如果插入一些小表情,页面渲染完之后,表情不会显示,并且表情之后的内容全部消失,导致体验感很差。

表情无法显示的原因是 uft-8 编码的问题,无法识别小表情,需要将其改成 utf8mb4

第一步,进入数据库

首先登陆博客后台的数据库,然后点击 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;

直接复制,然后点击右下角的执行

第二步,修改 typecho 配置文件

我使用的宝塔面板,点击左侧 网站 ,然后点击我们这个网站的根目录,进入之后,可以找到一个 config.inc.php 的文件,进入然后滑到最下面。

可以发现 'charset' => 'utf8',下面我为了更直观的显示,将其注释掉,重新写的,实际操作中,将 utf8 改为 utf8mb4 即可。

/** 定义数据库参数 */
$db = new Typecho_Db('Pdo_Mysql', 'typecho_');
$db->addServer(array (
  'host' => 'localhost',
  'user' => 'blog',
  'password' => 'blog',
  /** 'charset' => 'utf8', */
  'charset' => 'utf8mb4',
  'port' => '3306',
  'database' => 'blog',
), Typecho_Db::READ | Typecho_Db::WRITE);
Typecho_Db::set($db);

在文章后台重新输入小表情,然后保存回到页面,小表情成功显示了。