Стандарт сжатие Схема Unicode (ГТС) [1] является Unicode технического стандарта для уменьшения количества байт , необходимых для представления текста Unicode, особенно если этот текст использует в основном символы из одного или небольшого числа на языке-блоках символов. Это достигается путем динамического отображения значений в диапазоне 128–255 на смещения в определенных блоках по 128 символов. Начальные условия кодировщика означают, что существующие строки в ASCII и ISO-8859-1которые не содержат управляющих кодов C0, кроме NULL TAB CR и LF, могут рассматриваться как строки SCSU. Поскольку большинство алфавитов находятся в блоках смежных кодовых точек Unicode, тексты, в которых используются маленькие алфавиты и знаки препинания или знаки препинания ASCII, которые умещаются в пределах окна для основного алфавита, могут быть закодированы по одному байту на символ (плюс накладные расходы на настройку, которые для распространенных языков равны часто только 1 байт), большинство других знаков препинания можно закодировать из расчета 2 байта на символ с помощью неблокирующего сдвига. SCSU также может переключаться на UTF-16 внутри для обработки неалфавитных языков.
История и использование
Первоначально Reuters разработало SCSU, затем под названием RSCU для схемы сжатия Reuters для Unicode. [2] [3] [4] [5]
Сначала Консорциум Unicode считал это кодировкой символов [6], но в 1999 году изменил свое мнение: хотя он все еще считался синтаксисом кодирования передачи, какое-то время он больше не считался кодировкой символов, потому что разные компрессоры могли давать разные выходы для того же текста. [7] Однако в 2004 году это решение было отменено, и теперь SCSU считается схемой кодирования символов со сжатием , в отличие от простой или составной схемы кодирования символов. [8]
Роман Чиборра (из GNU Unifont ) написал декомпрессор. [9]
Symbian OS , операционная система для мобильных телефонов и других мобильных устройств, использует SCSU для сериализации строк.
SQL Server 2008 R2 использует SCSU для сжатия значений Unicode (это означает из строк в кодировке UCS-2 ), хранящихся в столбцах nchar (n) и nvarchar (n) , обеспечивая экономию места от 15% до 50% (в то время как UTF-8 имеет только это сокращение на 50% для подмножества ASCII Unicode), в зависимости от языка данных. [10]
Сравнение со схемами сжатия обычного текста общего назначения
Поскольку текст UTF-16 или UTF-8 может занимать больше места, чем его эквивалент в кодировках до Unicode, можно использовать сжатие, такое как SCSU, для смягчения этой проблемы. [11] По сравнению с компрессорами общего назначения использование SCSU не обязательно является преимуществом. [5] Кроме того, хотя он может использоваться в качестве кодирования текста, из-за того, что алгоритм имеет состояние, могут возникнуть трудности при его использовании в качестве внутреннего текстового представления, поскольку основные текстовые операции становятся нетривиальными.
Рассматриваемый исключительно как алгоритм сжатия, SCSU уступает наиболее часто используемым алгоритмам общего назначения для текстов размером более нескольких килобайт.
У SCSU есть то преимущество, что он может эффективно сжимать тексты длиной всего в несколько символов, в то время как большинству полномасштабных компрессоров требуются сотни байтов данных для безубыточности с учетом собственных накладных расходов. В ОС Symbian SCSU используется даже для операций с буфером обмена, например вырезания, копирования и вставки небольших строк текста.
В HTML
Поддержка SCSU в HTML- документах запрещена стандартами HTML W3C [12] [13] и WHATWG [14], поскольку HTML не был разработан с учетом кодировок, несовместимых с ASCII. В прошлом были продемонстрированы уязвимости межсайтового скриптинга из-за плохой обработки браузерами таких кодировок. [15]
Смотрите также
- Двоичное упорядоченное сжатие для Unicode (BOCU-1)
- Международные компоненты для Unicode Библиотека, которая может преобразовывать между SCSU и другими кодировками Unicode.
Рекомендации
- ^ "UTS # 6: Схема сжатия для Unicode" . 2005-05-06 . Проверено 13 июня 2008 .
SCSU определяет компактную кодировку, которая иногда бывает полезной. Однако текст Unicode гораздо чаще хранится и передается в UTF-8, который менее компактен (за исключением ASCII ), намного проще и не представляет никаких проблем с безопасностью. Для более длинных текстов часто используется универсальное сжатие.
- ^ https://unicode.org/iuc/iuc9/Friday2.html#b3
- ^ https://unicode.org/iuc/iuc10/program.html
- ^ https://unicode.org/reports/tr6-10.html
- ^ a b https://web.archive.org/web/20190508064108/ewellic.org/compression.html#scsu
- ^ https://unicode.org/reports/tr17/tr17-2.html
- ^ https://unicode.org/reports/tr17/tr17-3.html#Transfer Encoding Syntax
- ^ https://unicode.org/L2/L2004/04288-tr17-5d2.html#CharacterEncodingScheme
- ^ https://czyborra.com/scsu/scsu.c
- ^ «Реализация сжатия Unicode (электронная документация по SQL Server 2008 R2)» . Проверено 18 августа 2008 .
- ^ https://unicode.org/versions/Unicode3.0.0/ch05.pdf
- ^ «8.2.2.3. Кодировки символов» . Стандарт HTML 5.1 . W3C.
- ^ «8.2.2.3. Кодировки символов» . Стандарт HTML 5 . W3C.
- ^ «12.2.3.3 Кодировки символов» . Уровень жизни HTML . WHATWG.
- ^ « - HTML» . Веб-документы MDN . Mozilla. Архивировано из оригинала 3 октября 2018 года.