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

[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 服务,并确认变更

#登录 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_unicode_ci;  
mysql> ALTER TABLE posts CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;  

然后就支持emoji了.🙂🙂

--EOF--