Spec-Zone.ru › MySQL 5.7

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

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

Spec-Zone.ru

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