文档首页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  ...  /  utf32 字符集(UTF-32 Unicode 编码)

12.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 中没有编码技巧,因此存储的值等于代码值。

为了说明后一个优点的用处,以下示例展示了如何在给定 utf32 代码值的情况下确定 utf8mb4

/* 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;

MySQL 对添加未分配的 Unicode 字符或专用区域字符非常宽容。实际上,对于 utf32 只有一项有效性检查:任何代码值都不能大于 0x10ffff。例如,这是非法的

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