MySQL 8.0发布说明
MySQL 8.0源码文档10bet官方网站
的utf32
字符集是固定长度的(比如ucs2
和不像utf16
).utf32
每个字符使用32位,不像ucs2
(每个字符使用16位),而不像utf16
(某些字符使用16位,其他字符使用32位)。
utf32
需要两倍的空间ucs2
还有更多的空间utf16
,但utf32
有同样的优势吗ucs2
所需的字节数utf32
等于字符数乘以4。同时,与utf16
,没有用于编码的技巧utf32
,因此存储值等于代码值。
为了演示后一种优势是有用的,这里是一个示出了如何确定a的示例utf8mb4
价值给出utf32
代码的值:
/*假设代码值= 100cc LINEAR B轮式战车*/创建表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
:代码值不能大于0 x10ffff
.例如,这是非法的:
INSERT INTO t (utf32_column) VALUES (0x110000);/ *非法* /