Jump to content

Двоичное упорядоченное сжатие для Юникода

(Перенаправлено с BOCU )

Двоичное упорядоченное сжатие для Юникода ( BOCU ) — это MIME- совместимая схема сжатия Юникода. BOCU-1 сочетает в себе широкую применимость UTF-8 с компактностью стандартной схемы сжатия для Unicode (SCSU). Эта Unicode кодировка предназначена для сжатия коротких строк и поддерживает порядок кодовых точек. BOCU-1 указан в Техническом примечании Unicode. [1]

Для сравнения SCSU был принят в качестве стандартной схемы сжатия Unicode с соотношением байт/кодовая точка, аналогичным кодовым страницам для конкретного языка . SCSU не получил широкого распространения, поскольку не подходит для «текстовых» типов мультимедиа MIME. Например, SCSU нельзя использовать непосредственно в электронной почте и подобных протоколах. Для обеспечения хорошей производительности SCSU требуется сложная конструкция кодера. Обычно алгоритмы zip , bzip2 и другие стандартные отраслевые алгоритмы более эффективно сжимают большие объемы текста в Юникоде. [2]

Оба ГКСУ [3] и БОКУ-1 [4] являются зарегистрированными IANA кодировками.

Подробности

[ редактировать ]

Все числа в этом разделе являются шестнадцатеричными , и все диапазоны включаются.

Кодовые точки из U+0000 к U+0020 кодируются в BOCU-1 как соответствующее значение байта. Все остальные кодовые точки (т. е. U+0021 через U+D7FF и U+E000 через U+10FFFF) кодируются как разница между кодовой точкой и нормализованной версией самой последней кодированной точки, которая не была пространством ASCII ( U+0020). Исходное состояние U+0040. Отображение нормализации выглядит следующим образом:

Диапазон кода Нормализованная кодовая точка Примечания
U+3040 к U+309FU+3070Хирагана
U+4E00 к U+9FA5U+7711Объединяйтесь
U+AC00 к U+D7A3U+C1D1хангыль
U+0020состояние энкодера сохраняется как есть Космос
U+hhhh00 к U+hhhh7F
(исключая диапазоны, указанные выше)
U+hhhh40середина
из 128
U+hhhh80 к U+hhhhFF
(исключая диапазоны, указанные выше)
U+hhhhC0середина
из 128

Разница между текущей кодовой точкой и нормализованной предыдущей кодовой точкой кодируется следующим образом:

Диапазон различий Диапазон последовательности байтов
(см. ниже)
-10FF9F к -2DD0D21 F0 58 D9 к 21 FF FF FF
-2DD0C к -291222 01 01 к 24 FF FF
-2911 к -4125 01 к 4F FF
-40 к 3F50 к CF
40 к 2910D0 01 к FA FF
2911 к 2DD0BFB 01 01 к FD FF FF
2DD0C к 10FFBFFE 01 01 01 к FE 19 B4 54

Каждый диапазон байтов упорядочен лексикографически, за исключением следующих тринадцати байтовых значений: 00 07 08 09 0A 0B 0C 0D 0E 0F 1A 1B 20. Например, последовательность байтов FC 06 FF, кодирование для разницы 1156B, сразу за ним следует последовательность байтов FC 10 01, кодирование для разницы 1156C.

Любой ввод ASCII U+0000 к U+007F исключая пространство U+0020 сбрасывает энкодер в U+0040. Поскольку вышеупомянутые значения охватывают точки кода конца строки. U+000D и U+000A как есть ( 0D 0A), кодер находится в известном состоянии в начале каждой строки. Таким образом, повреждение одного байта затрагивает не более одной строки. Для сравнения, повреждение одного байта в UTF-8 влияет не более чем на одну кодовую точку, а в SCSU — на весь документ.

BOCU-1 обеспечивает аналогичную надежность и для входных текстов без вышеупомянутых значений со специальным кодом сброса. 0xFF. Когда декодер находит этот октет, он сбрасывает свое состояние на U+0040 что касается конца строки. Использование 0xFF байты сброса не рекомендуется в спецификации BOCU-1, поскольку это противоречит другим целям проектирования BOCU-1, особенно двоичному порядку .

Необязательное использование подписи U+FEFF в начале закодированных текстов BOCU-1, т.е. последовательности байтов BOCU-1. FB EE 28, меняет исходное состояние U+0040 к U+FEC0. Другими словами, подпись нельзя просто удалить, как в большинстве других схем кодирования Unicode. Добавление байта сброса после подписи ( FB EE 28 FF) можно было бы избежать этого эффекта, но спецификация BOCU-1 не рекомендует такую ​​практику.

Теоретически UTF-1 и UTF-8 могут кодировать исходный набор UCS-4 с 31 битом до 7FFFFFFF. BOCU-1 и UTF-16 могут кодироватьсовременный набор Unicode из U+0000 к U+10FFFF. За исключением тринадцати защищенных кодовых точек, закодированных как одиночные октеты, которые BOCU-1 может использовать. октеты в многобайтовых кодировках. BOCU-1 требуется не более четырех байтов, состоящих из ведущего байта и одного-трех завершающих байтов. Байты следа кодируют оставшуюся разницу « по модулю 243» (по основанию 243), ведущий байт определяет количество байтов следа и начальную разницу. Обратите внимание, что байт сброса 0xFF не защищен и может встречаться как следовой байт.

До 16 ноября 2022 года общий алгоритм BOCU был описан в патенте США № 6737994, в котором также упоминается конкретная реализация BOCU-1. [5] Срок действия этого патента истек.

IBM , в которой работали оба изобретателя BOCU-1 на момент его создания, заявила в Техническом примечании Unicode, что разработчики «полностью совместимой версии BOCU-1» должны были связаться с IBM для запроса бесплатной лицензии. [6] BOCU-1 — единственная схема сжатия Unicode, описанная на веб-сайте Unicode, которая, как известно, обременена ограничениями интеллектуальной собственности .

Напротив, IBM также подала заявку на патент на UTF-EBCDIC , но в этом случае решила сделать документацию и схему кодирования «свободно доступными для всех, кто заинтересован в том, чтобы сделать формат преобразования частью стандартов UCS», вместо того, чтобы требовать от разработчиков. запросить лицензию. [7]

  1. ^ Маркус Шерер, Марк Дэвис (4 февраля 2006 г.). «УТН №6: БОКУ-1» . Проверено 18 мая 2008 г.
  2. ^ Юэлл, Дуг (30 января 2004 г.). «UTN № 14: Обзор сжатия Unicode» (PDF) . Проверено 13 июня 2008 г.
  3. ^ Запись о регистрации IANA для SCSU.
  4. ^ Запись регистрации IANA для BOCU-1
  5. ^ Дэвис ; и др. (18 мая 2004 г.). «Патент США № 6,737,994, «Двоично-упорядоченное сжатие для Юникода» » . Проверено 28 декабря 2022 г.
  6. ^ Маркус Шерер, Марк Дэвис (4 февраля 2006 г.). «УТН №6: БОКУ-1» . Проверено 5 февраля 2014 г.
  7. ^ против Умамахесварана (16 апреля 2002 г.). «UTR № 16: UTF-EBCDIC» . Проверено 16 ноября 2008 г.

См. также

[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 0307a80cf5df014e42bc8d9329d71365__1712199960
URL1:https://arc.ask3.ru/arc/aa/03/65/0307a80cf5df014e42bc8d9329d71365.html
Заголовок, (Title) документа по адресу, URL1:
Binary Ordered Compression for Unicode - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)