Введение

Хранение Unicode в виде 4 байтов на кодовую точку. UTF-32 (32-битный формат преобразования Unicode) — это кодировка с фиксированной длиной, используемая для кодирования кодовых точек Unicode, которая использует ровно 32 бита (четыре байта) на кодовую точку (однако, поскольку количество кодовых точек Unicode значительно меньше, чем 2<sup>32</sup>, фактически требуется только 21 бит, поэтому старшие биты должны быть нулевыми). Основной недостаток UTF-32 — неэффективность использования пространства: на каждую кодовую точку выделяется четыре байта, включая 11 битов, которые всегда равны нулю. Символы, выходящие за пределы BMP, относительно редки в большинстве текстов (за исключением, например, текстов, содержащих популярные эмодзи), и их обычно можно не учитывать при оценке размера. Это делает UTF-32 почти вдвое больше, чем UTF-16. В зависимости от количества символов, входящих в подмножество ASCII, он может быть до четырех раз больше UTF-8. Хотя стандарт ISO (по состоянию на 1998 год, Unicode 2.1) резервировал диапазоны 0xE00000–0xFFFFFF и 0x60000000–0x7FFFFFFF для частного использования, эти диапазоны были удалены в более поздних версиях. Поскольку в документе «Принципы и процедуры» рабочей группы 2 ISO/IEC JTC 1/SC 2 указано, что все будущие назначения кодовых точек будут ограничены диапазоном Unicode, UTF-32 сможет представлять все кодовые точки UCS, и UTF-32 и UCS-4 будут идентичны.

Варианты

Хотя технически недействительны, суррогатные пары часто кодируются и допускаются. Это позволяет преобразовывать недействительный UTF-16 (например, имена файлов Windows) в UTF-32, подобно тому, как работает вариант WTF-8 кодировки UTF-8. Иногда вместо символов вне базовой многоязыковой плоскости (BMP) кодируются парные суррогаты, аналогично CESU-8. Благодаря большому количеству неиспользуемых 32-битных значений, также возможно сохранить недействительный UTF-8, используя не-Unicode значения для кодирования ошибок UTF-8, хотя для этого не существует стандарта.