前言
发现 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', 'port' => '***', 'database' => '****', ), Typecho_Db::READ | Typecho_Db::WRITE); Typecho_Db::set($db);
|
修改后保存文件即可。