### 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 */ ```