牛骨文教育服务平台(让学习变的简单)
博文笔记

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

创建时间:2015-08-14 投稿人: 浏览次数:9907

微信昵称中包含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);

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


参考链接:

http://dev.mysql.com/doc/refman/5.5/en/charset-unicode-utf8mb4.html

http://stackoverflow.com/questions/7814293/how-to-insert-utf-8-mb4-characteremoji-in-ios5-in-mysql


by iefreer

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。