如果你从搜索引擎调转过来我想你的 Typecho 博客默认应该是没有支持 Emoji 否则你不会打开这篇文章,在你想给自己的 Typecho 博客增加 Emoji 表情功能之前你需要知道一点是你的 Mysql 数据库版本是否为 5.5 以后版本,如果你用的是虚拟主机请咨询你的主机商你们数据库版本。如果不是,请先把数据转移到Mysql5.5版本以上。

Emoji 表情

最近看到大家都开始折腾起了 Typecho 的 Emoji 表情功能,并且现在手机聊天 Emoji 表情用的也是越来越多了,所以今天博主也给自己的博客数据库升级了一下来支持这个可爱的小玩意。

emoji就是表情符号,来自日语词汇“絵文字”(假名为“えもじ”,读音即emoji),随着技术的发展被使用得越来越广泛。如下边这些表情:
😀😄😁😊🤣🤬😷🥶🤔🥳
👶👧🧒👦👩👴👳💂🕵👩‍🎓
🐶🐱🐭🦊🐯🦁🐥🦆🦄🐍
🍎🥦🧀🥓🍖🍔🍟🧁🥮🍵
⚽🏀🏈🏉🎾🏸🎿🥊🎬🎻

Typecho添加Emoji表情使报错

Typecho添加Emoji表情不支持,报错Database Query Error

utf8mb4 与 UTF8

注意:对于 MariaDB 而言貌似 utf8mb4 有一个使用限制,MariaDB 版本必须是 5.5 以上;对于PHP而言,只有在PHP5.5以后才支持。

Mysql的这个问题主要来自于字符长度,因为 Emoji 它是在 Unicode 位于\u1F601-\u1F64F区段的字符,然而我们默认所用的 UTF-8字符集支持的编码范围在\u0000-\uFFFF,在 Mysql 数据库中,我们常用的 UTF-8 格式编码最多支持 3 个字节,而 Emoji 是 4 个字节的符号。简单来说用就是你想用3个字节去存储4个字节的东西,很明显是存不下的,会报错,所以要用 utf8mb4,并且 utf8mb4 是兼容 utf8 的。所以 Emoji 表情的长度就超出了我们常用 UTF-8 的字符集范围。

开始动手

数据库是网站的命根子,无论如何请务必先备份你的数据文件,再进行下面操作,操作前先备份,操作前先备份,操作前先备份!!!这么重要的问题我必须重复三遍,因为没有备份出问题,最后无法恢复的人太多了!!!如果你还没有注意,那么你将不是一个合格的站长!!!

1.修改Typecho根目录配置文件

通过SSH或者网页管理工具登陆博客服务器,找到网站根目录下的config.inc.php文件,将 charset 的属性修改为`utf8mb4 即可,具体如下:

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

2. 修改数据库编码

如果你正好使用PhpMyadmin的话,那么修改起来就比较容易了。
登陆自己的 PHPMYADMIN 后台,查看 Mysql 数据库版本是否为5.5,顺便找到自己的 Typecho 博客数据库,比如我的数据如下图:

点击自己的博客数据库,查看你们数据库表的排序规则,默认你们应该和我不一样的,我截图里是已经修改过的

选中您的数据库,【操作】➡【表选项】➡【排序规则】➡选择倒数第二个utf8mb4_unicode_ci,不建议勾选更改所有列排序规则,因为我们下一步会用Mysql指令操作,更加稳妥。最后点击右侧【执行】

3.修改数据库表的编码

上面操作为设置我们博客数据库的编码,接下来需要设置我们数据库表的编码,操作数据表编码需要使用命令,在选中当前数据库时,点击 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 改成你自己的表对应的前缀,我的默认是 typecho 然后点击执行按钮即可。步骤可见下图:

在你点击执行之前我还是要啰嗦一句,你备份了吗?

OK!大功告成,赶紧在你的博客中添加表情吧!🤟

Last modification:April 30th, 2021 at 05:12 pm
如果觉得我的文章对你有用,请随意赞赏