开启 Typecho 支持 emoji 表情

前言

发现 typecho 并不支持 emoji 表情,提交带有 emoji 表情的时候,会提示 Data query error, 因为 typecho 安装后的数据库是 utf8, 并不是 utf8mb4,所以只需要修改下数据表的字符编码就行了。

修改数据库储存编码

登录服务器执行 mysql 操作,切换到 typecho 的数据库。

mysql -uroot -p 
show databases;
use typecho; // 名称可能不一样
show tables;

执行以下 sql 语句,修改数据库中表的编码格式 utf8mb4,如果还有其他表,请一同修改。

格式:alter table 表名称 convert to character set utf8mb4 collate utf8mb4_general_ci;
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_links 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 配置

进入到 typecho 网站根目录,找到 config.inc.php 文件,跳转到约 60 行左右,好像都是在文件底部,修改:

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

修改后保存文件即可。

参考
https://www.maxoyed.com/archives/20/

最后修改:2019 年 08 月 02 日 08 : 11 PM

Last modification:June 20, 2021
如果觉得我的文章对你有用,请随意赞赏