做微信开发的时候就会发现,存储微信昵称必不可少。之前的项目里面微信昵称很多都是空白,后来才知道是因为emoji表情的问题。原来是因为Mysql的utf8字符集是3字节的,而emoji是4字节,这样整个昵称就无法存储了。
我收集了一些解决方法:
1、修改数据库 使用utfmb4字符集
修改mysql配置文件 character-set-server=utf8mb4
改完之后重启mysql服务
修改表 ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
2、使用base64编码
base64_encode编码之后入库,出库的时候base64_decode解开
3、过滤emoji表情$nickname = json_encode( $nickname );
$nickname = preg_replace( "#(\\\ue[0-9a-f]{3})#ie", "", $nickname );
$nickname = preg_replace( "#(\\\ud[0-9a-f]{3})#ie", "", $nickname );
$nickname = json_decode( $nickname );
安卓 ios 亲测可用 2016.9.27