Loading...
MySQL 9.5 Reference Manual 9.5의 12.9.7 The utf32 Character Set (UTF-32 Unicode Encoding)의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
utf32 character set은 고정 길이입니다 (ucs2와 같고 utf16과는 다릅니다).
utf32는 모든 character에 대해 32비트를 사용하며, 이는 모든 character에 대해 16비트를 사용하는 ucs2와도 다르고, 일부 character에는 16비트, 다른 일부에는 32비트를 사용하는 utf16과도 다릅니다.
utf32는 ucs2보다 두 배의 공간을 사용하고 utf16보다 더 많은 공간을 사용하지만, 저장 측면에서 예측 가능하다는 점에서 ucs2와 동일한 이점을 가집니다:
utf32에 필요한 byte 수는 character 수에 4를 곱한 값과 같습니다.
또한 utf16과는 달리, utf32에는 인코딩을 위한 어떤 트릭도 없으므로, 저장된 값이 코드 값과 동일합니다.
이후의 이점이 어떻게 유용한지 보여 주기 위해, utf32 코드 값이 주어졌을 때 utf8mb4 값을 구하는 방법을 보여 주는 예제가 있습니다:
1/* Assume code value = 100cc LINEAR B WHEELED CHARIOT */ 2CREATE TABLE tmp (utf32_col CHAR(1) CHARACTER SET utf32, 3 utf8mb4_col CHAR(1) CHARACTER SET utf8mb4); 4INSERT INTO tmp VALUES (0x000100cc,NULL); 5UPDATE tmp SET utf8mb4_col = utf32_col; 6SELECT HEX(utf32_col),HEX(utf8mb4_col) FROM tmp;
MySQL은 할당되지 않은 유니코드 문자나 private-use-area 문자의 추가에 대해 매우 관대합니다.
실제로 utf32에 대한 유효성 검사는 단 하나뿐입니다: 어떤 코드 값도 0x10ffff보다 클 수 없습니다.
예를 들어, 다음은 허용되지 않습니다:
1INSERT INTO t (utf32_column) VALUES (0x110000); /* illegal */
12.9.6 The utf16le Character Set (UTF-16LE Unicode Encoding)
12.9.8 Converting Between 3-Byte and 4-Byte Unicode Character Sets