您的位置:首页 > 移动开发 > 微信开发

关于授权登录后将微信昵称保存到mysql问题

2018-03-12 15:36 417 查看
微信授权登陆后,如果要将用户的昵称等信息保存到数据库的话,如果昵称中有emoji表情,如果数据库字符集为utf8的话,有可能会保存是报错,在这里我将我自己保存微信用户基本信息时遇到问题解决的方法说一下;
文章参考于:https://www.cnblogs.com/zhangwufei/p/7017325.html

mysql的utf8编码的一个字符最多3个字节,但是一个emoji表情为4个字节,所以utf8不支持存储emoji表情。但是utf8的超集utf8mb4一个字符最多能有4字节,所以能支持emoji表情的存储。下面介绍了关于如何修改mysql数据库的编码格式变为utf8mb4的具体方法。Linux系统中MySQL的配置文件为my.cnf。(注:有空把mysql默认编码改为utf8的实现过程也记录下来)Winows中的配置文件为my.ini。1.修改mysql的配置文件:
[client]default-character-set=utf8mb4 [mysqld]character-set-client-handshake = FALSEcharacter-set-server = utf8mb4collation-server = utf8mb4_unicode_ciinit_connect=’SET NAMES utf8mb4' [mysql]default-character-set=utf8mb4
修改完以后保存并重启数据库
2.修改库表的字符集
将库表的字符集修改为:utf8mb4.
1) 修改database的字符集:ALTER DATABASE 库名 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;例如:ALTER DATABASE 数据库名 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;2) 第一步执行完成之后,需要执行use 数据库名,指明当前需要进行字符集修改的数据库;例如:use xxxdb;3)修改table的字符集:ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;例如:ALTER TABLE user_comments CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;4) 修改column的字符集:ALTER TABLE 表名 CHANGE 字段名 字段名 该字段原来的数据类型 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;例如:ALTER TABLE user_comments CHANGE content content TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
3.检查字符集:
进入mysql中,用SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';命令查看字符集的情况 上述步骤实现之后便可成功使用emoji表情存储进mysql数据库的功能了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: