问题 :
对接微信开发时,保存微信用户名称时,名称里面包含了 Emoji表情或者某些特殊字符,就报错:Incorrect string value: '\xF0\x9F...' for column 'name' at row 1
分析:
MySQL的utf8编码最多3个字节,Emoji表情或者某些特殊字符是4个字节,所以数据插入不了,需要修改编码。
解决:
1. 查看数据库的版本,需要版本5.5+
mysql -V
2.查看数据库编码
show variables like ‘character_set_database’;
3.修改数据库的编码格式:vim /etc/my.cnf
[mysqld]
collation-server=utf8mb4_general_ci
character_set_server=utf8mb4
注意:MySQL5.5以上这些参数key为下划线
4. 重启数据库
service mysqld restart
5. 修改数据表格编码格式
alter table tb_name character set utf8mb4;
6. 修改字段编码格式
alter table <表名> change <字段名> <字段名> <类型> character set utf8mb4;
7. 将数据库连接语句url中去掉characterEncoding,重启项目
8. 插入成功