stringtranslate.com

Универсальный набор кодированных символов

Универсальный кодированный набор символов ( UCS , Unicode ) — стандартный набор символов , определенный международным стандартом ISO / IEC  10646 «Информационные технологии — Универсальный кодированный набор символов (UCS)» (плюс поправки к этому стандарту), который является основой многих кодировок символов , совершенствуясь по мере добавления символов из ранее не представленных систем набора текста.

UCS имеет более 1,1 миллиона возможных кодовых точек, доступных для использования/распределения, но только первые 65 536, которые являются базовой многоязыковой плоскостью (BMP), вошли в общее использование до 2000 года. Эта ситуация начала меняться, когда в 2006 году Китайская Народная Республика (КНР) постановила, что все программное обеспечение, продаваемое в ее юрисдикции, должно поддерживать GB 18030. Это потребовало, чтобы программное обеспечение, предназначенное для продажи в КНР, вышло за рамки BMP. [ необходимо разъяснение ]

Система намеренно оставляет много кодовых точек не назначенными символам, даже в BMP. Это делается для того, чтобы обеспечить будущее расширение или минимизировать конфликты с другими формами кодирования.

В оригинальном издании UCS определен UTF-16 , расширение UCS-2, для представления кодовых точек за пределами BMP. Диапазон кодовых точек в зоне S (специальной) BMP остается неназначенным символам. UCS-2 запрещает использование кодовых значений для этих кодовых точек, но UTF-16 допускает их использование парами. Unicode также принял UTF-16, но в терминологии Unicode элементы зоны high-half становятся «high surrogates», а элементы зоны low-half становятся «low surrogates». [ необходимо разъяснение ]

Другая кодировка, UTF-32 (ранее называвшаяся UCS-4), использует четыре байта (всего 32 бита) для кодирования одного символа кодового пространства. Таким образом, UTF-32 допускает двоичное представление каждой кодовой точки (по состоянию на 2024 год) в API и программных приложениях.

История

Международная организация по стандартизации (ИСО) приступила к разработке универсального набора символов в 1989 году и опубликовала проект ISO 10646 в 1990 году. Хью МакГрегор Росс был одним из его главных разработчиков.

Эта работа велась независимо от разработки стандарта Unicode , который разрабатывался с 1987 года компаниями Xerox и Apple .

Первоначальный проект ISO 10646 существенно отличался от действующего стандарта. Он определял:

для видимого общего количества в 2 147 483 648 символов, но на самом деле стандарт мог кодировать только 679 477 248 символов, поскольку политика запрещала байтовые значения кодов управления C0 и C1 (от 0x00 до 0x1F и от 0x80 до 0x9F в шестнадцатеричной системе счисления) в любом из четырех байтов, определяющих группу, плоскость, строку и ячейку. Например, латинская заглавная буква A имела местоположение в группе 0x20, плоскости 0x20, строке 0x20, ячейке 0x41.

Символы этого изначального стандарта ISO/IEC 10646 можно закодировать одним из трех способов:

  1. UCS-4, четыре байта на каждый символ, что обеспечивает простое кодирование всех символов;
  2. UCS-2, два байта на каждый символ, что позволяет кодировать первую плоскость, 0x20, базовую многоязычную плоскость, содержащую первые 36 864 кодовых точек, напрямую, а также другие плоскости и группы, переключаясь на них с помощью управляющих последовательностей ISO/IEC 2022 ;
  3. UTF-1 , который кодирует все символы в последовательности байтов различной длины (от 1 до 5 байтов, каждый из которых не содержит управляющих кодов).

Таким образом, в 1990 году существовало две инициативы по созданию универсального набора символов: Unicode с 16 битами на каждый символ (65 536 возможных символов) и ISO/IEC 10646. Компании-разработчики программного обеспечения отказались принять требования стандарта ISO по сложности и размеру и смогли убедить ряд национальных органов ISO проголосовать против него. [ необходима цитата ] Чиновники ISO поняли, что они не могут продолжать поддерживать стандарт в его текущем состоянии, и договорились об унификации своего стандарта с Unicode. Произошло два изменения: снятие ограничения на символы (запрет значений управляющего кода), что открыло кодовые точки для распределения; и синхронизация репертуара Базовой многоязычной плоскости с репертуаром Unicode.

Между тем, с течением времени ситуация в самом стандарте Unicode изменилась: 65 536 символов стало недостаточно, и стандарт с версии 2.0 и далее поддерживает кодирование 1 112 064 кодовых точек из 17 плоскостей с помощью суррогатного механизма UTF-16 . По этой причине ISO/IEC 10646 был ограничен содержанием столько символов, сколько могло быть закодировано UTF-16 и не более, то есть чуть более миллиона символов вместо более 679 миллионов. Кодировка UCS-4 ISO/IEC 10646 была включена в стандарт Unicode с ограничением диапазона UTF-16 и под названием UTF-32 , хотя она почти не используется вне внутренних данных программ.

Роб Пайк и Кен Томпсон , разработчики операционной системы Plan 9 , разработали новую, быструю и хорошо продуманную кодировку смешанной ширины, которая также была обратно совместима с 7-битной ASCII , которая стала называться UTF-8 [ 1] и в настоящее время является самой популярной кодировкой UCS.

Отличия от Unicode

ISO/IEC 10646 и Unicode имеют идентичный репертуар и номера — одни и те же символы с одинаковыми номерами существуют в обоих стандартах, хотя Unicode выпускает новые версии и добавляет новые символы чаще. Unicode имеет правила и спецификации, выходящие за рамки ISO/IEC 10646. ISO/IEC 10646 — это простая таблица символов, расширение предыдущих стандартов, таких как ISO/IEC 8859. Напротив, Unicode добавляет правила для сортировки , нормализации форм и двунаправленного алгоритма для сценариев справа налево, таких как арабский и иврит. Для взаимодействия между платформами, особенно если используются двунаправленные сценарии, недостаточно поддерживать ISO/IEC 10646; необходимо реализовать Unicode.

Для поддержки этих правил и алгоритмов Unicode добавляет множество свойств к каждому символу в наборе, например, свойства, определяющие двунаправленный класс символа по умолчанию, и свойства, определяющие, как символ сочетается с другими символами. Если символ представляет числовое значение, например, европейское число '8' или вульгарную дробь '¼', это числовое значение также добавляется как свойство символа. Unicode предполагает, что эти свойства будут поддерживать совместимую обработку текста со смесью языков.

Некоторые приложения поддерживают символы ISO/IEC 10646, но не полностью поддерживают Unicode. Одно из таких приложений, Xterm , может правильно отображать все символы ISO/IEC 10646, которые имеют сопоставление символов и глифов один к одному [ необходимо разъяснение ] и однонаправленность. Оно может обрабатывать некоторые комбинированные знаки простыми методами перечеркивания, но не может отображать иврит (двунаправленный), деванагари (один символ ко многим глифам) или арабский язык (обе функции). Большинство приложений GUI используют стандартные процедуры рисования текста ОС, которые обрабатывают такие скрипты, хотя сами приложения по-прежнему не всегда обрабатывают их правильно.

Ссылка на универсальный набор кодированных символов

ISO/IEC 10646 , общая, неформальная ссылка на семейство стандартов ISO/IEC 10646, приемлема в большинстве текстов. И хотя это отдельный стандарт, термин Unicode используется так же часто, неформально, при обсуждении UCS. Однако любые нормативные ссылки на UCS как на публикацию должны содержать год издания в форме ISO/IEC 10646:{year} , например: ISO/IEC 10646:2014 .

Связь с Unicode

С 1991 года Консорциум Unicode и ISO / IEC совместно разработали Стандарт Unicode («Unicode») и ISO/IEC 10646. Репертуар, имена символов и кодовые точки Unicode версии 2.0 в точности соответствуют таковым в ISO/IEC 10646-1:1993 с его первыми семью опубликованными поправками. После публикации Unicode 3.0 в феврале 2000 года соответствующие новые и обновленные символы вошли в UCS через ISO/IEC 10646-1:2000. В 2003 году части 1 и 2 ISO/IEC 10646 были объединены в одну часть, которая с тех пор имела ряд поправок, добавляющих символы в стандарт примерно синхронно со стандартом Unicode.

Смотрите также

Сопутствующие стандарты:

Ссылки

  1. Пайк, Роб (2003-04-03). "История UTF-8". Архивировано из оригинала 2016-05-23.

Внешние ссылки