关于MySQL实现指定编码遇到的坑

 更新时间:2021年10月16日 10:29:28   作者:Jae1995  
这篇文章主要介绍了一个关于MySQL指定编码实现的小坑,文中大家需要注意如果有需要保存emoji符号的字段,记得一定要指定编码为 utf8mb4,感兴趣的朋友一起看看吧

写在前面

环境: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指定编码实现的小坑的文章就介绍到这了,更多相关MySQL指定编码内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Mysql的基本函数与自定义函数用法

    Mysql的基本函数与自定义函数用法

    这篇文章主要介绍了Mysql的基本函数与自定义函数用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Mysql中的查询加强和多表查询详解

    Mysql中的查询加强和多表查询详解

    这篇文章主要介绍了Mysql中的查询加强和多表查询详解,在MySQL中,查询加强主要包括使用索引、优化查询语句和使用存储过程等方面,通过创建适当的索引,可以大大提高查询的效率,需要的朋友可以参考下
    2023-10-10
  • Mysql时区的几种问题及解决方法

    Mysql时区的几种问题及解决方法

    在使用MySQL时,时区设置容易引发一些错误,本文将介绍MySQL时区问题可能引发的错误,并提供一些解决方案,具有一定的参考价值,感兴趣的可以了解一下
    2024-07-07
  • 解读mysql主从配置及其原理分析(Master-Slave)

    解读mysql主从配置及其原理分析(Master-Slave)

    在windows下配置的,后面会在Linux下配置进行测试,需要配置mysql数据库同步的朋友可以参考下。
    2011-05-05
  • Navicat导入导出Mysql 结构、数据、结构+数据完整步骤

    Navicat导入导出Mysql 结构、数据、结构+数据完整步骤

    导出表结构是指将数据库中的表的结构信息导出为SQL脚本或其他格式的文件,这个功能非常实用,特别是在数据库迁移或备份时,这篇文章主要给大家介绍了关于Navicat导入导出Mysql 结构、数据、结构+数据的相关资料,需要的朋友可以参考下
    2024-08-08
  • 原来MySQL 数据类型也可以优化

    原来MySQL 数据类型也可以优化

    这篇文章主要介绍了原来MySQL 数据类型也可以优化,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下,希望对你的学习有所帮助
    2022-08-08
  • MySQL聚簇索引、非聚簇索引、覆盖索引详解

    MySQL聚簇索引、非聚簇索引、覆盖索引详解

    这篇文章详细介绍了聚簇索引、非聚簇索引和覆盖索引的概念,并通过图示和实例说明了索引查找的过程和回表查询的概念,同时,文章也提到了覆盖索引的优点和弊端,并给出了适用场景
    2024-12-12
  • SQL数据去重的3种方法实例详解

    SQL数据去重的3种方法实例详解

    SQL去重是数据分析工作中比较常见的一个场景,下面这篇文章主要给大家介绍了关于SQL数据去重的3种方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-01-01
  • mysql5.7.33误删除ibdata文件找回数据的方法

    mysql5.7.33误删除ibdata文件找回数据的方法

    这篇文章主要介绍了mysql5.7.33误删除ibdata文件找回数据的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • MySQL优化全攻略-相关数据库命令

    MySQL优化全攻略-相关数据库命令

    MySQL优化全攻略-相关数据库命令...
    2006-11-11

最新评论