修改MySQL数据库编码使ZBlog支持emoji表情

· MySQL不能存储emoji的原因

标准的 UTF-8 字符集编码是可以用 1~4 个字节去编码21位字符,这几乎包含了是世界上所有能看见的字符了。

然而,在MySQL里实现的utf8最长使用3个字节,只支持 Unicode 中U 0000至U FFFF的字符,包含了控制符、拉丁文,中、日、韩等绝大多数国际字符,但是emoji表情和一些不常用的汉字,如 “𪚥” (四个龍组成的汉字,Unicode:0002A6A5,UTF-8:F0AA9AA5),这些在utf8中需要四个字节才能编码的字符,就无法存储。

因此,MySQL在 5.5.3 之后增加了utf8mb4 字符编码,mb4即 most bytes 4。简单说 utf8mb4 是 utf8 的超集并完全兼容utf8,能够用四个字节存储更多的字符。 

MySQL 在 8.0 开始使用 utf8mb4 作为 MySQL 的默认字符集。

· 解决方法

1. 备份数据库(一定要先备份数据,数据无价);

2. 确保MySQL版本大于 5.5.3,低于5.5.3的请升级版本;

查看方法,执行以下SQL命令,看返回结果:

select version();

3. 修改服务器上MySQL的默认编码,修改数据库、表、列的字符集为utf8mb4

ALTER DATABASE [数据库名称] CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
ALTER TABLE [表名] CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

示例(数据库名我用zbase示范了,大家根据自己的实际修改;表名我用默认的zbp_的前缀来进行操作,修改前缀的请根据你实际的表名操作):

ALTER DATABASE zbase CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
ALTER TABLE zbp_post CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE zbp_comment CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

通过以下SQL查询,可以检查utf8mb4是否生效。

SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';

如上图所示,即为修改成功了。

MySQL 就可以支持emoji表情的存储,ZBlog也就可以显示和存储emoji了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值