Ghost博客支持emoji

原文链接

转载备忘

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

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

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

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

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

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

下面是我博客的my.cnf内容,系统是CentOS7.2,文件位置/etc/my.cnf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[client]
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci

[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#登录 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)

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

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

然后就支持emoji了.🙂🙂

–EOF–