• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    为何不要在MySQL中使用UTF-8编码方式详解

    MySQL的UTF-8编码方式

    MySQL 从 4.1 版本开始支持 UTF-8,也就是 2003 年,然而目前流行的UTF-8 标准(RFC 3629)是在此之后规定的。正因此,才造就了MySQL中的UTF-8与我们日常开发中的UTF-8不一致,从到导致了些问题。MySQL的UTF-8只支持每个字符最多三个字节,而真正的 UTF-8 是每个字符最多四个字节。

    问题复现

    有数据库表如下:utf8编码方式

    往数据库存一条记录:

    @Test
    public void testInsert() {
     User user = new User();
     user.setUsername("\uD83D\uDE00 ");
     user.setPassword("123456");
     userRepo.save(user);
    }

    这里只是部分代码,看不懂没关系,这里是给user表插入一条记录。其中username是\uD83D\uDE00 。

    其实\uD83D\uDE00是一个emoji表情。

    因为MySQL中utf8字符集只支持三字节UTF-8编码的Unicode范围,而emoji字符属于四字节编码部分,所以程序运行预期是会报错的。运行这段代码:

    与预期一致,报错了。

    解决问题

    虽然MySQL的UTF-8存在缺陷,但是MySQL(包括mariadb)官方却没有修复此bug,而是通过2010年重新发布的“utf8mb4”来支持真正的 UTF-8。因此想要解决此问题,只能够将MySQL数据库设置为utf8mb4字符集才行。

    总结

    这个问题,也是因为某次保存数据的时候保存了一个emoji表情才发现的。其实最早开始用MySQL的时候,就有发现一个utf8mb4了,但是自己却没有却去了解UTF8和UTF8MB4的区别。通过此次教训,以后使用MySQL就老老实实的设置字符集为utf8mb4吧。

    好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。

    您可能感兴趣的文章:
    • mysql数据库设置utf-8编码的方法步骤
    • MySQL GBK→UTF-8编码转换
    • 为什么在MySQL中不建议使用UTF-8
    上一篇:Mysql错误:Too many connections的解决方法
    下一篇:mysql-8.0.16 winx64的最新安装教程图文详解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    为何不要在MySQL中使用UTF-8编码方式详解 为,何不,要在,MySQL,中,使用,