本篇内容主要讲解“关于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 编码实现。
utf8:utf8 编码只支持三个字节以内。在 utf8 编码中,中文是占了3个字节,其他的英文、数字、符号都是占1个字节。但是emoji符号占4个字节,一些比较复杂的文字、繁体字也是占4个字节。
utf8mb4:UTF-8编码的完整实现。最多可支持4个字节,所以,可以用来存储emoji符号。
查阅资料,官方解释:
Tips:如果有需要保存emoji符号的字段,记得一定要指定编码为 utf8mb4 。
到此,相信大家对“关于MySQL实现指定编码遇到的坑有哪些”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。