Spec-Zone.ru › MySQL 9.2

12.9.7 Набор символов utf32 (кодировка Unicode UTF-32)

Набор символов 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 */

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/charset-unicode-utf32.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API