Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  ...  /  The utf32 Character Set (UTF-32 Unicode Encoding)

12.9.7 UTF-32 字符集(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 */