### 10.9.7 utf32 字符集（UTF-32 Unicode 编码）

[](<>)

这`utf32`字符集是固定长度的（比如`ucs2`而且不像`utf16`）。`utf32`每个字符使用 32 位，不像`ucs2`（每个字符使用 16 位），并且不像`utf16`（某些字符使用 16 位，其他字符使用 32 位）。

`utf32`占用两倍的空间`ucs2`和更多的空间`utf16`， 但`utf32`具有相同的优势`ucs2`它是可预测的存储：所需的字节数`utf32`等于字符数乘以 4。另外，不像utf16`, 编码没有技巧`utf32`，因此存储的值等于代码值。`为了演示后一种优势如何有用，这里有一个示例，说明如何确定

utf8mb4`给定的值`utf32`代码值：`MySQL 对添加未分配的 Unicode 字符或私有使用区域字符非常宽容。

```
/* Assume code value = 100cc LINEAR B WHEELED CHARIOT */
CREATE TABLE tmp (utf32_col CHAR(1) CHARACTER SET utf32,
                  utf8mb4_col CHAR(1) CHARACTER SET utf8mb4);
INSERT INTO tmp VALUES (0x000100cc,NULL);
UPDATE tmp SET utf8mb4_col = utf32_col;
SELECT HEX(utf32_col),HEX(utf8mb4_col) FROM tmp;
```

实际上只有一个有效性检查utf32`: 没有代码值可以大于`0x10ffff`.`例如，这是非法的：

```
INSERT INTO t (utf32_column) VALUES (0x110000); /* illegal */
```
