Spec-Zone .ru
спецификации, руководства, описания, API
|
utf32
набор символов является фиксированной длиной (как ucs2
и в отличие от этого utf16
). utf32
использование 32 бита для каждого символа, в отличие от этого ucs2
(который
использует 16 битов для каждого символа), и в отличие от этого utf16
(который
использует 16 битов для некоторых символов и 32 бита для других).
utf32
занимает вдвое больше места как ucs2
и больше
пространства чем utf16
, но utf32
имеет то же самое
преимущество как ucs2
то, что это предсказуемо для хранения: необходимое число
байтов для utf32
равняется числу времен символов 4. Кроме того, в отличие от этого
utf16
, нет никаких приемов для того, чтобы закодировать в utf32
,
таким образом, хранимая сумма равняется кодовому обозначению.
Чтобы демонстрировать, как последнее преимущество полезно, вот, пример, который показывает, как определить a
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 */