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代码值的情况下确定值:
/* 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 tmpVALUES (0x000100cc,NULL);UPDATE tmpSET 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 */
