MySQL中utf8mb4和utf8字符集之间的区别是什么?

MySQL中的utf8mb4utf8字符集之间有什么区别

我已经知道了ASCIIUTF-8UTF-16UTF-32编码;
但是我很想知道utf8mb4编码组与MySQL服务器中定义的其他编码类型有什么区别

使用utf8mb4而不是utf8有什么特别的好处/建议吗?

UTF-8是一种可变长度编码。在UTF-8的情况下,这意味着存储一个代码点需要一到四个字节。然而,MySQL的编码称为;utf8"(别名为“utf8mb3”)每个代码点最多只能存储三个字节

因此字符集;utf8&quot/&引用;utf8mb3“;无法存储所有Unicode代码点:它只支持范围0x000到0xFFFF,称为;基本多语言平面”;。
另请参见Unicode编码的比较

这是MySQL文档(同一页面的早期版本)对它的描述:

名为utf8[/utf8mb3]的字符集每个字符最多使用三个字节,并且仅包含BMP字符。从MySQL 5.5.3开始,utf8mb4字符集每个字符最多使用四个字节,支持补充字符:

  • 对于BMP字符,utf8[/utf8mb3]和utf8mb4具有相同的存储特性:相同的代码值、相同的编码、相同的长度

  • 对于补充字符,utf8[/utf8mb3]根本无法存储该字符,而utf8mb4需要四个字节来存储该字符。由于utf8[/utf8mb3]根本无法存储字符,因此在utf8[/utf8mb3]列中没有任何补充字符,并且在从较旧版本的MySQL升级utf8[/utf8mb3]数据时,不必担心转换字符或丢失数据

因此,如果您希望您的列支持存储位于BMP之外的字符(您通常希望),如表情符号,请使用"utf8mb4"。另请参见实际使用中最常见的非BMP Unicode字符是什么

发表评论