微信开放接口获取用户昵称保存到MySQL中为空白

微信昵称中包含emoji表情标签,某些标签是使用了4字节编码的UTF8。

而大多数MySQL数据库现在使用的是3字节UTF8编码,这样会导致保存为空,且不会提示失败。

解决方法有2个,一个是升级到MySQL5.5+版本,支持utf8mb4编码格式,然后执行下面的变更语句:

ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;

这样可以完整保存用户昵称,但系统升级风险较大,需要多方面测试。

另外一个方法更容易,就是去除非3字节的特殊符号,

$nickname = preg_replace('/[\x{10000}-\x{10FFFF}]/u', '', $nickname);

缺点是这会导致读取显示的时候少了那些漂亮的图标。

转载于:https://www.cnblogs.com/w10234/p/5973823.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值