php emoji 乱码,微信emoji昵称展示乱码问题

搜索热词

对于没有把表情等特殊字符考虑在内的系统,当向数据库写入emoji时,数据库就会报错,如下所示:

数据库写入emoji时报错

原因

emoji表情为4个字符,而一般MysqL的utf8编码最多3个字节,所以插入时就会报错。

前端解决方案

作为一个前端,自己能解决的,绝不麻烦后端同学。在前端,将emoji字符先使用encodeURIComponent进行转义,写入数据库,然后读取显示时,再使用decodeURIComponent进行解码。

更改数据库编码格式将MysqL的编码从utf8转换成utf8mb4。

从 MysqL 5.5.3 开始,MysqL 支持一种 utf8mb4 的字符集,这个字符集能够支持 4 字节的 UTF8 编码的字符。 utf8mb4 字符集能够完美地向下兼容 utf8 字符串。在数据存储方面,当一个普通中文字符存入数据库时仍然占用 3 个字节,在存入一个 Unified Emoji 表情的时候,它会自动占用 4 个字节。所以在输入输出时都不会存在乱码的问题了。

要使用 MysqL 的这个特性,首先需要把 MysqL 升级到 5.5.3 以上的版本。其次,需要修改数据结构中的字符集为 utf8mb4 ,如 utf8mb4_general_ci 。由于 utf8mb4 是 utf8 的超集,从 utf8 升级到 utf8mb4 不会有任何问题,直接升级即可;如果从别的字符集如 gb2312 或者 gbk 转化而来,一定要先备份数据库。然后,修改 MysqL 的配置文件 /etc/my.cnf,修改连接默认字符集为 utf8mb4 ,如果是自己写的 PHP 脚本,也可以在连接数据库以后首先执行一句 sql: SET NAMES utf8mb4;。这时候,PHP 应该就可以正常保存 Emoji 到数据库了。对于数据库配置不是很懂,以上摘抄自博文emoji写入数据库报错处理的方法参考1、encodeURIComponent2、emoji写入数据库报错处理的方法

可以通过扫码识别小程序体验下

255ba53bf22519f145a21d455354ad9d.png

d11ba7a517c3895e2d1b811382e217c4.png

亲测可以正常展示emoji,如果有没有解决的,可以在评论区域留言。

总结

以上是编程之家为你收集整理的微信emoji昵称展示乱码问题全部内容,希望文章能够帮你解决微信emoji昵称展示乱码问题所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值