让WordPress支持Emoji表情


《让Wordpress支持Emoji表情》

由于前期建站不注意细节,数据库使用了UTF-8编码,当数据上面带有emoji图标时,例如:😂、😱、😘等表情,存储后表情消失,甚至导致报错,一直找不到原因。

尽管如此,但影响不大,页面还是能正常访问,表情无法显示而已。

到了《熙慧来琳》微信小程序上线后,问题便凸显出来,当带有emoji表情微信名的用户对文章进行评论时,提示评论失败,对文章点赞将直接导致文章无法显示……今天终于解决了这个问题,发一篇文章作为记录。

经过站友提醒,才发现是数据库编码的原因,据资料显示,在MYSQL5.5前,UTF-8编码只支持1-3个字节,只支持BMP这部分的unicode编码区,而emoji表情恰好是4个字节的编码进行存储。从MYSQL5.5开始,可支持4个字节UTF编码utf8mb4,一个字符最多能有4字节,所以能支持更多的字符集。所以要解决问题,必需把数据库表字符编码全部改成utf8mb4。

常用编码类型:

  • ASCII:美国信息互换标准编码;英语和其他西欧语言;单字节编码,7位表示一个字符,共128字符。
  • GBK:双字节,汉字内码扩展规范;中日韩汉字、英文、数字;双字节编码;共收录了21003个汉字,GB2312的扩展。
  • UTF-8:Unicode标准的可变长度字符编码;Unicode标准(统一码),业界统一标准,包括世界上数十种文字的系统。
  • UTF-8:使用一至三个字节为每个字符编码。
  • utf8mb4:存储四个字节,应用场景用于存储emoji表情,因为可以emoji表情四个字节。
  • utf8mb4:MySQL版本 > 5.5.3 。
  • 其他常见字符集:UTF-32,UTF-16,Big5,latin1
  • 数据库中的字符集包含两层含义
    各种文字和符号的集合,包括各国家文字、标点符号、图形符号、数字等。
    字符的编码方式,即二进制数据与字符的映射规则。

第一步:对数据库进行备份。

第二步:确认数据库版本为5.5以上,如版本过久则进行升级。

第三步:把数据库、表、字段转换为utf8mb4。

# 对每一个数据库:
ALTER DATABASE 这里数据库名字 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
# 对每一个表:
ALTER TABLE 这里是表名字 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# 对每一个字段:
ALTER TABLE 这里是表名字 CHANGE 字段名字 重复字段名字 VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# 上面一句或者使用modify来更改
ALTER TABLE 这里是表名字 modify 字段名字 VARCHAR(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT ”;

例如我的数据库名称是『holyshit』,在phpMyAdmin的SQL中填入:

ALTER DATABASE holyshit CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

《让Wordpress支持Emoji表情》

然后点『执行』

第四步:修改MySQL的配置。

在我系统上到/etc/my.cnf文件,并打开修改。如果它不存在,我们需要创建这样一个文件并修改。

《让Wordpress支持Emoji表情》

复制以下内容,粘贴至my.cnf文件末尾处。

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

最后一步:重启MySQL,并检查utf8mb4是否生效。

通过SQL进行查询:

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

《让Wordpress支持Emoji表情》

《让Wordpress支持Emoji表情》

如图显示则修改成功!

下面测试一下emoji表情的显示情况:

😀😃😄😁😆😅😂🤣☺️😊😇🙂🙃😉😌😍😘😗😙😚😋😜😝😛🤑🤗🤓😎🤡🤠😏😒😞😔😟😕🙁☹️😣😖😫😩😤😠😡😶😐😑😯😦😧😮😲😵😳😱😨😰😢😥🤤😭😓😪😴🙄🤔🤥😬🤐🤢🤧😷🤒🤕😈👿👹👺💩👻💀☠️👽👾🤖🎃😺😸😹😻😼😽🙀😿😾👐🏻🙌🏻👏🏻🙏🏻🤝👍👎🏻👊🏻✊🏻🤛🏻🤜🏻🤞🏻✌🏻🤘🏻👌👈🏻👉🏻👆🏻👇🏻☝🏻✋🏻🤚🏻🖐🏻🖖🏻👋🏻🤙🏻💪🏻🖕🏻✍🏻🤳🏻💅🏻💍💄💋👄👅👂🏻👃🏻👣👁👀🗣👤👥👶🏻👦🏻👧🏻👨🏻👩🏻👱🏻‍♀️👱🏻👴🏻👵🏻👲🏻👳🏻‍♀️👳🏻👮🏻‍♀️👮🏻👷🏻‍♀️👷🏻💂🏻‍♀️💂🏻🕵🏻‍♀️🕵🏻👩🏻‍⚕️👨🏻‍⚕️👩🏻‍🌾👩🏻‍🍳👨🏻‍🍳👩🏻‍🎓……

欢迎大家能在下面用emoji表情评论测试~

.

注:部分影音因版权无法在网页播放

请扫一扫以下二维码

打开“熙慧来琳”小程序播放哦!

更多热门文章

熙慧来琳免责声明与转载须知

本站文章部分内容参考转载互联网,并不代表本站赞同其观点和对其真实性负责。

如涉及作品内容、版权等问题,请及时与本站联系,我们将在第一时间删除内容!

如需转载本站内容请注上“转载自【熙慧来琳XHLLin.com】”,请勿用于任何商业用途

点赞

发表评论

电子邮件地址不会被公开。