MySQL在默认使用的UTF-8编码,但是U8在数据库最多支持3个字节,emoji表情会多出一个字节,会导致显示问号或者直接导致程序出现问题,在最初使用MWordStar主题的时候,就出现了这个问题, 它本身在评论自带emoji表情,但是当时没有对其进行设置,所以一直在报500的错误,后来对数据库和config.inc.php进行重新配置后发现问题解决。

修改数据库字符集编码

修改数据库 charset 为 utf8mb4

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;

这里注意一定不要用Navicat for mysql这种图形界面的属性或者编辑数据库功能改编码,可能会出现问题,我之前改过之后依然是显示问号。

修改 Typecho 配置文件中数据库字符接

修改 Typecho 配置文件'config.inc.php'中数据库定义参数中的 charset 为 utf8mb4

$db->addServer(array (
    'host'      =>  localhost,
    'user'      =>  'myuser',
    'password'  =>  'mypass',
    'charset'   =>  'utf8mb4', //修改这一行
    'port'      =>  3306,
    'database'  =>  'mybase'
), Typecho_Db::READ | Typecho_Db::WRITE);

至此,修改完成,就可以愉快的使用emoji了。

最后编辑:2021年06月02日 ©著作权归作者所有

评论已关闭