微信授权登陆后,如果要将用户的昵称等信息保存到数据库的话,如果昵称中有emoji表情,如果数据库字符集为utf8的话,有可能会保存是报错,在这里我将我自己保存微信用户基本信息时遇到问题解决的方法说一下;
文章参考于:https://www.cnblogs.com/zhangwufei/p/7017325.html
Linux系统中MySQL的配置文件为my.cnf。(注:有空把mysql默认编码改为utf8的实现过程也记录下来)
Winows中的配置文件为my.ini。
1.修改mysql的配置文件:
[client]
default-character-set=utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_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数据库的功能了。
本文介绍了解决微信用户昵称中包含Emoji表情导致MySQL utf8编码无法正常存储的问题。通过修改MySQL配置、数据库、表及字段的字符集为utf8mb4,实现了Emoji表情的有效存储。
3567

被折叠的 条评论
为什么被折叠?



