Подтвердить что ты не робот

Почему нет UTF-24?

Возможный дубликат:
Почему существует UTF-32, тогда как для кодирования каждого символа требуется только 21 бит?

Максимальная кодовая точка Unicode равна 0x10FFFF в UTF-32. UTF-32 имеет 21 информационный бит и 11 лишних пустых бит. Итак, почему нет кодировки UTF-24 (т.е. UTF-32 с удаленным старшим байтом) для хранения каждой кодовой точки в 3 байта, а не 4?

4b9b3361

Ответ 1

Ну, на самом деле: UTF-24 был предложен в 2007 году:

http://unicode.org/mail-arch/unicode-ml/y2007-m01/0057.html

Указанные плюсы и минусы:

"UTF-24 
Advantages: 
 1. Fixed length code units. 
 2. Encoding format is easily detectable for any content, even if mislabeled. 
 3. Byte order can be reliably detected without the use of BOM, even for single-code-unit data. 
 4. If octets are dropped / inserted, decoder can resync at next valid code unit. 
 5. Practical for both internal processing and storage / interchange. 
 6. Conversion to code point scalar values is more trivial then for UTF-16 surrogate pairs 
    and UTF-7/8 multibyte sequences. 
 7. 7-bit transparent version can be easily derived. 
 8. Most compact for texts in archaic scripts. 
Disadvantages: 
 1. Takes more space then UTF-8/16, except for texts in archaic scripts. 
 2. Comparing to UTF-32, extra bitwise operations required to convert to code point scalar values. 
 3. Incompatible with many legacy text-processing tools and protocols. "

Как указал Дэвид Старнер в http://www.mail-archive.com/[email protected]/msg16011.html:

Почему? UTF-24 почти всегда будет больше, чем UTF-16, если только вы говорят документ в Старом Курсив или Готический. Математический алфавитно-цифровой символы почти всегда будут объединены с достаточным количеством ASCII, чтобы сделать UTF-8 - победа, а если нет, достаточно символов BMP, чтобы сделать UTF-16 победой. Современные компьютеры не имеют дело с 24-битными кусками; в памяти, они бы возьмите 32 бита за кусок, если вы не объявили их упакованными, а затем они будут намного медленнее, чем UTF-16 или UTF-32. И если вы храните диска, вы также можете использовать BOCU или SCSU (вы уже собираетесь нестандартные) или использовать стандартное сжатие с UTF-8, UTF-16, BOCU или ГТС. Сжатый SCSU или BOCU должен занимать половину пространства UTF-24, если это.

Вы также можете проверить следующий пост StackOverflow:

Почему существует UTF-32, тогда как для кодирования каждого символа требуется только 21 бит?