### 10.9.2 utf8mb3 字符集（3 字节 UTF-8 Unicode 编码）

[](<>)[](<>)[](<>)

这`utf8mb3`字符集具有以下特点：

-   仅支持 BMP 字符（不支持补充字符）

-   每个多字节字符最多需要三个字节。

    使用 UTF-8 数据但需要补充字符支持的应用程序应使用`utf8mb4`而不是`utf8mb3`（看[第 10.9.1 节，“utf8mb4 字符集（4 字节 UTF-8 Unicode 编码）”](charset-unicode-utf8mb4.html)）。

[](<>)[](<>)

完全相同的字符集可用于`utf8mb3`和`ucs2`.也就是说，它们具有相同的[曲目](glossary.html#glos_repertoire).

笔记

历史上，MySQL 曾使用`utf8`作为别名`utf8mb3`;从 MySQL 8.0.28 开始，`utf8mb3`专门用于输出`显示`表示此字符集时的语句和信息模式表中。

在未来的某个时刻`utf8`有望成为参考`utf8mb4`.为了避免含义模糊`utf8`，考虑指定`utf8mb4`明确地用于字符集引用而不是`utf8`.

您还应该知道，`utf8mb3`不推荐使用字符集，您应该期望它在未来的 MySQL 版本中被删除。请用`utf8mb4`反而。

`utf8mb3`可用于`字符集`条款，和`utf8mb3_*`collat​​ion_substring`*`在`整理`子句，其中*`collat​​ion_substring`*是`斌`,`捷克语`,`丹麦语_ci`,`esperanto_ci`,`爱沙尼亚语_ci`，等等。例如：

```
CREATE TABLE t (s1 CHAR(1) CHARACTER SET utf8mb3;
SELECT * FROM t WHERE s1 COLLATE utf8mb3_general_ci = 'x';
DECLARE x VARCHAR(5) CHARACTER SET utf8mb3 COLLATE utf8mb3_danish_ci;
SELECT CAST('a' AS CHAR CHARACTER SET utf8) COLLATE utf8_czech_ci;
```

MySQL 立即转换实例`utf8mb3`在声明中`utf8`, 所以在诸如`显示创建表`要么`从 INFORMATION_SCHEMA.COLUMNS 中选择 CHARACTER_SET_NAME`要么`从 INFORMATION_SCHEMA.COLUMNS 中选择 COLLATION_NAME`, 用户看到名字`utf8`要么`utf8_*`collat​​ion_substring`*`.

`utf8mb3`在其他情况下也有效`字符集`条款。例如：

```
mysqld --character-set-server=utf8mb3
```

```
SET NAMES 'utf8mb3'; /* and other SET statements that have similar effect */
SELECT _utf8mb3 'a';
```

有关与多字节字符集相关的数据类型存储的信息，请参阅[字符串类型存储要求](storage-requirements.html#data-types-storage-reqs-strings).
