小编典典

MySQL 中的 utf8mb4 和 utf8 字符集有什么区别?

all

MySQLutf8mb4utf8charsets 有什么区别? __

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

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


阅读 187

收藏
2022-03-18

共1个答案

小编典典

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

所以字符集“utf8”/“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] 列中没有任何补充字符,您不必担心从旧版本升级
    utf8[/utf8mb3] 数据时转换字符或丢失数据mysql。

因此,如果您希望您的列支持存储位于 BMP
之外的字符(并且您通常想要),例如emoji,请使用“utf8mb4”。另请参阅实际使用中最常见的非
BMP Unicode 字符是什么?
.

2022-03-18