数据库
首页 > 数据库> > 一个关于MySQL指定编码实现的小坑

一个关于MySQL指定编码实现的小坑

作者:互联网

写在前面

环境:MySQL5.7+,MySQL数据库字符编码实现为utf8,表也为utf8

场景:微信授权获取用户信息(包括昵称)并保存到数据库,有的用户成功了,少数用户却失败了

 

那么为什么会失败呢? 

贴上报错日志

Incorrect string value: '\xF0\x9F\x98\x98\xF0\x9F...' for column 'nickname' at row 1

是因为失败的用户微信昵称中带有emoji符号导致的

 

剖析:

MySQL支持多种字符编码集,如UTF-8、GB2312、GBK等

可以通过 SHOW CHARSET 命令查看。

通常我们会建议使用 UTF-8 作为默认的字符编码方式。

从上图我们可以看到,MySQL数据库有两套 UTF-8 编码实现。

 

 

 

查阅资料,官方解释:

 

最后

Tips:如果有需要保存emoji符号的字段,记得一定要指定编码为 utf8mb4 。 

标签:编码,UTF,字节,utf8,MySQL,小坑,emoji
来源: https://www.cnblogs.com/jae-tech/p/15406171.html