Введение
Хранение 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 32 (32 bit Unicode Transformation Format) is a fixed length encoding used to encode Unicode code points that uses exactly 32 bits (four bytes) per code point (but a number of leading bits must be zero as there are far fewer than 232 Unicode code points, needing actually only 21 bits). The main disadvantage of UTF 32 is that it is space inefficient, using four bytes per code point, including 11 bits that are always zero. Characters beyond the BMP are relatively rare in most texts (except for e. g. texts with some popular emojis), and can typically be ignored for sizing estimates. This makes UTF 32 close to twice the size of UTF 16. It can be up to four times the size of UTF 8 depending on how many of the characters are in the ASCII subset. Although the ISO standard had (as of 1998 in Unicode 2.1) "reserved for private use" 0xE00000 to 0xFFFFFF, and 0x60000000 to 0x7FFFFFFF these areas were removed in later versions. Because the Principles and Procedures document of ISO/IEC JTC 1/SC 2 Working Group 2 states that all future assignments of code points will be constrained to the Unicode range, UTF 32 will be able to represent all UCS code points and UTF 32 and UCS 4 are identical.
Варианты
Хотя технически недействительны, суррогатные пары часто кодируются и допускаются. Это позволяет преобразовывать недействительный UTF-16 (например, имена файлов Windows) в UTF-32, подобно тому, как работает вариант WTF-8 кодировки UTF-8. Иногда вместо символов вне базовой многоязыковой плоскости (BMP) кодируются парные суррогаты, аналогично CESU-8. Благодаря большому количеству неиспользуемых 32-битных значений, также возможно сохранить недействительный UTF-8, используя не-Unicode значения для кодирования ошибок UTF-8, хотя для этого не существует стандарта.