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 * /