cover

自从 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 吧,是不是可以正常显示啦!😝

支付宝扫码打赏 微信打赏

若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏

扫描二维码,分享此文章

王鹿苑's Picture
王鹿苑

云计算产品经理、业余摄影师

Guangzhou「廣州」 https://xiao.lu