• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 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 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 */