解决 Ghost 博客不能显示 Emoji 😀

请注意,本文编写于 1169 天前,最后修改于 22 天前,其中某些信息可能已经过时。

自从 Emoji 被推广开来,被越来越多的操作系统支持,变成了一种通用的表情符号,今天看到 Ghost 的官方博客文章中用了 Emoji,我也想试一下,发现自己文章中插入 Emoji 发表后不能显示。😭

Google 了一下,找到了问题,我的 Ghost 数据保存在 MySQL 数据库上,当时安装 MySQL 设置了 utf8 的字符集,需要改成 utf8mb4 才能支持存储 Emoji。

那么如何把当前 MySQL 的编码由 utf8 转换为 utf8mb4 呢?😶

首先,为了保险起见,务必先备份一下原来的数据库。

然后呢,确认一下 MySQL 的版本号,要高于 5.5.3。

第三步,修改 MySQL 的配置文件 my.cnf,加入下面的内容,如果之前有设置 utf8 字符集的内容,需要删除。

[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-server = utf8mb4

第四步,重启 MySQL 服务,并确认变更

#登录 MySQL(需要 MySQL root 密码)
mysql -uroot -p
mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
+--------------------------+--------------------+
| Variable_name            | Value              |
+--------------------------+--------------------+
| character_set_client     | utf8mb4            |
| character_set_connection | utf8mb4            |
| character_set_database   | utf8mb4            |
| character_set_filesystem | binary             |
| character_set_results    | utf8mb4            |
| character_set_server     | utf8mb4            |
| character_set_system     | utf8               |
| collation_connection     | utf8mb4_unicode_ci |
| collation_database       | utf8mb4_unicode_ci |
| collation_server         | utf8mb4_unicode_ci |
+--------------------------+--------------------+
10 rows in set (0.00 sec)

第五步,修改数据库和数据表的编码格式。

#选择数据库,database-name 替换为你自己的数据库名
mysql> use database-name
#对于 Ghost 貌似修改这两处就行了
mysql> ALTER DATABASE ghost CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci;
mysql> ALTER TABLE posts CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

好了,现在再试试在 Ghost 博客文章中插入 Emoji 吧,是不是可以正常显示啦!😝

添加新评论

本站现已启用评论投票,被点踩过多的评论将自动折叠。与本文无关评论请发留言板。请不要水评论,谢谢。

评论列表