ITPub博客

首页 > 数据库 > MySQL > UTF-8/utf8mb4

UTF-8/utf8mb4

原创 MySQL 作者:山有木xi 时间:2020-05-18 14:49:35 0 删除 编辑

UTF-8,utf8mb4,是不是看起来很迷

对于普通的操作和项目总是习惯性的选择UTF-8

当我愉快的建了了一张用户表,然后输入

然后就报错了

我在客户方,服务器,数据库使用均是UTF-8,那么为啥会出错呢?

先来看看官方文档是这么说的

“The character set named utf8 uses a maximum of three bytes per character and contains only BMP characters. The utf8mb4 character set uses a maximum of four bytes per character supports supplementary characters:


For a BMP character, utf8 and utf8mb4 have identical storage characteristics: same code values, same encoding, same length.


For a supplementary character, utf8 cannot store the character at all, whereas utf8mb4 requires four bytes to store it. Because utf8 cannot store the character at all, you have no supplementary characters in utf8 columns and need not worry about converting characters or losing data when upgrading utf8 data from older versions of MySQL.”

可以看到MySQL中的UTF-8实际上并不是真正标准的UTF-8,在MySQL中UTF-8使用1-3个字节来表示,而标准的UTF-8使用的是1-4个字节,也就是说,emoji和一些生僻字等无法保存下来,而utf8mb4才是真正标准的UTF-8

但是到目前为止,MySQL关于UTF-8和utf8mb4区别有限,而UTF-8支持的1-3字节,也比1-4字节的utf8mb4查询速度更快,空间更加节省,MySQL没有将UTF-8直接改为四个字节其实是因为涉及到MySQL底层存储逻辑,并且现有的使用UTF-8的数据库无法在线升级,干脆知己出了个utf8mb4更为快捷

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69917874/viewspace-2692738/,如需转载,请注明出处,否则将追究法律责任。

上一篇: android中StackView
下一篇: AutoComlete TextView
全部评论
Oracle OCA(Java),IBM高级工程师认证,中国软件行业人才(高级c语言),高级Android工程师,对数据库并发与性能调优也有一定了解

注册时间:2019-04-25

  • 博文量
    83
  • 访问量
    235578