10.1.10.4 utf32 문자 세트 (UTF-32 Unicode 인코딩)
utf32 문자 세트는 고정 길이입니다 ( ucs2 과 마찬가지로, utf16 과는 다릅니다). utf32 은 모든 문자에 32 비트를 사용하고 ucs2 (모든 문자에 16 비트를 사용합니다) 모두 utf16 (일부 문자가 16 비트를 다른 문자로 32 비트를 사용합니다) 모두 다릅니다.
utf32 은 ucs2 의 2 배의 공간, 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 의 타당성 검사는 1 개 밖에 없습니다. 0x10ffff 보다 큰 코드 값은 없습니다. 예를 들어 다음의 경우는 부정합니다.
INSERT INTO t (utf32_column) VALUES (0x110000); / * illegal * /