一个关于MySQL指定编码实现的小坑
2021/10/14 19:17:37
本文主要是介绍一个关于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指定编码实现的小坑的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-25如何部署MySQL集群资料:新手入门教程
- 2024-12-24MySQL集群部署资料:新手入门教程
- 2024-12-24MySQL集群资料详解:新手入门教程
- 2024-12-24MySQL集群部署入门教程
- 2024-12-24部署MySQL集群学习:新手入门教程
- 2024-12-24部署MySQL集群入门:一步一步搭建指南
- 2024-12-07MySQL读写分离入门:轻松掌握数据库读写分离技术
- 2024-12-07MySQL读写分离入门教程
- 2024-12-07MySQL分库分表入门详解
- 2024-12-07MySQL分库分表入门指南