前言

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

修改数据库储存编码

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

1
2
3
4
mysql -uroot -p		// 然后输入你的数据库root密码
show databases;
use typecho; // 你的数据库名 名称可能不一样
show tables;

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

请一同修改。

格式:alter table 表名称 convert to character set utf8mb4 collate utf8mb4_general_ci;

1
2
3
4
5
6
7
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_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行附近,在文件底部,修改:

1
2
3
4
5
6
7
8
9
10
11
/** 定义数据库参数 */
$db = new Typecho_Db('Pdo_Mysql', 'typecho_');
$db->addServer(array (
'host' => 'localhost',
'user' => '***',
'password' => '***',
'charset' => 'utf8mb4',/*修改编码为utf8mb4*/
'port' => '***',
'database' => '****',
), Typecho_Db::READ | Typecho_Db::WRITE);
Typecho_Db::set($db);

修改后保存文件即可。