UCS (Universal Coded Character Set)

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 17:30, 24 декабря 2016.

UCS (англ. Universal Coded Character Set) представляет собой стандартный набор символов, определенный международным стандартом ISO/IEC 10646, который является основой многих символьных кодировок. UCS содержит чуть более 128 000 абстрактных символов, как и в Unicode 9.0, каждый из которых определяется однозначно сочетанием имени и целого числа (так называемый кодовый пункт).

Символы (буквы, цифры, идеограммы, логограммы и т.д.) из многих языков, манускриптов, традиций мира представлены в UCS с уникальными кодовыми пунктами. Символы из ранее не представленных письменностей добавляются в UCS, постоянно совершенствуя ее.

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

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

Формы кодирования

ISO 10646 определяет несколько форм кодирования символов для UCS. Простейшая, UCS-2 , использует одно кодовое значение (определенное как одно или несколько чисел, представляющих собой кодовую точку) в диапазоне от 0 до 65 535 для каждого символа, а также предоставляет ровно два байта (одно 16-битное слово) , чтобы представить значение. UCS-2, таким образом, позволяет сделать бинарное представление каждого кодового пункта в BMP, до тех пор, пока кодовый пункт представляет собой символ. UCS-2 не может представлять кодовые пункты вне BMP.

Первая поправка к первоначальному изданию UCS определяется UTF-16 , как расширение UCS-2, предоставляющее кодовые пункты вне BMP. Диапазон кодовых пунктов в S (Special) зоне BMP остается не назначенным для символов. UCS-2 запрещает использование кодовых значений для этих кодовых пунктов, но UTF-16 позволяет использовать их в парах. Unicode также приняла UTF-16, но в терминологии Unicode, элементы зоны верхней половины стали "верхними заменителями", а элементы зоны нижней половины стали "нижними заменителями".

Другая кодировка, UCS-4, использует одно кодовое значение между 0 и (теоретически) 7fffffff (в 16-ричной системе счисления) для каждого символа (хотя UCS останавливается на 10FFFF и ISO / IEC 10646 заявил, что все будущие добавления символов будут занимать место в этом диапазоне). UCS-4 позволяет представить каждое значение, как четыре байта (одно 32-битовое слово). Таким образом, UCS-4 позволяет сделать бинарное представление каждого кодового пункта в UCS, в том числе и за пределами BMP. Как и в UCS-2, каждый закодированный символ имеет фиксированную длину в байтах, что позволяет проще с ним манипулировать, но, она требует вдвое больше памяти, чем UCS-2. В настоящее время, доминирующей формой кодирования UCS является UTF-8 , которая представляет собой кодирование с переменной шириной, предназначенная для обратной совместимости с ASCII. Более половины всех веб - страниц закодированы в UTF-8. Инженерный совет Интернета (англ. Internet Engineering Task Force, IETF) требует , чтобы все протоколы Интернета определяли кодирование, используемое для представления символьных данных, а также поддерживаемое кодирование символов должно включать UTF-8. Internet Mail Consortium (IMC) рекомендует, чтобы все программы электронной почты были в состоянии показывать и создавать письма, использующие UTF-8.

История

Международная организация по стандартизации (ISO), представила универсальный набор символов в 1989 году и опубликовал проект ISO 10646 в 1990 году. Hugh McGregor Ross был одним из ее главных архитекторов. Этот стандарт заметно отличался от нынешнего. Он определил:

  • 128 групп,
  • 256 плоскостей,
  • 256 строк,
  • 256 ячеек,

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

Можно кодировать символы по стандарту ISO 10646 одним из трех способов:

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

Таким образом в 1990 году существовало 2 представления универсального набора символов: Unicode, с 16 битами для каждого символа (65,536 возможных символов) и ISO 10646. Компании, выпускающие программное обеспечение, отказались принимать сложный и зависящий от размера стандарт ISO и смогли убедить ряд ISO National Bodies проголосовать против него. В ISO поняли, что они не могут продолжать поддерживать стандарт в своем нынешнем состоянии и стали вести переговоры об унификации их стандарта с Unicode. Произошли два изменения : снятие ограничения на символы (запрещение значений управляющих кодов), открывая тем самым кодовые пункты, такие как 0x0000101F, для размещения символов и синхронизация BMP с той, что в Unicode.

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

Различия с Unicode

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

Для поддержки этих правил и алгоритмов, Unicode добавляет много свойств для каждого символа в наборе, такие как принадлежность символа к двунаправленному классу, или как символ сочетается с другими символами. Если символ представляет собой числовое значение, например, европейский число '8', или обыкновенная дробь '¼', то числовое значение также добавляется как свойство символа. Некоторые приложения поддерживают ISO 10646 , но не полностью поддерживают Unicode. Одно из таких приложений, Xterm, может правильно отображать все символы ISO 10646, которые имеют взаимно однозначное отображение одну направленность. Он может обрабатывать некоторые комбинированные метки простыми методами повторного нажатия, но не может отображать иврит (двунаправленная), деванагари (один символ для многих символов) или арабский (обе функции). Большинство приложений с графическим интерфейсом используют вывод текста инструментами операционной системы, которые обрабатывают такие шрифты, хотя сами приложения не всегда делают это корректно.

Взаимосвязь с Unicode

  • ISO / IEC 10646-1: 1993 = Unicode 1.1
  • ISO / IEC 10646-1: 1993 плюс поправки от 5 до 7 = Unicode 2.0
  • ISO / IEC 10646-1: 1993 плюс поправки от 5 до 7 = Unicode 2.1 за исключением знака евро и специального блока Unicode, которые включены в поправку 18
  • ISO / IEC 10646-1: 2000 = Unicode 3.0
  • ISO / IEC 10646-1: 2000 и ISO / IEC 10646-2: 2001 = Unicode 3.1
  • ISO / IEC 10646-1: 2000 плюс поправка 1 и ISO / IEC 10646-2: 2001 = Unicode 3.2
  • ISO / IEC 10646: 2003 = Unicode 4.0
  • ISO / IEC 10646: 2003 плюс поправка 1 = Unicode 4.1
  • ISO / IEC 10646: 2003 плюс поправки 1 к 2 = Unicode 5.0 за исключением блока Деванагари, который включены в поправку 3
  • ISO / IEC 10646: 2003 плюс поправки 1 до 4 = Unicode 5.1
  • ISO / IEC 10646: 2003 плюс поправки от 1 до 6 = Unicode 5.2
  • ISO / IEC 10646: 2003 плюс поправки от 1 до 8 = ISO / IEC 10646: 2011 = Unicode 6.0 исключая символ рупии
  • ISO / IEC 10646: 2012 = Unicode 6.1
  • ISO / IEC 10646: 2012 = Unicode 6.2 за исключением знака турецкой лиры , который включен в поправку 1
  • ISO / IEC 10646: 2012 = Unicode 6.3 за исключением знака турецкой лиры , который включен в поправку 1, и пять двунаправленных символов (Arabic Letter Mark, Left-To-Right Isolate, Right-To-Left Isolate, First Strong Isolate, Pop Directional Isolate), которые включены в поправку 2
  • ISO / IEC 10646: 2012 плюс поправки 1 и 2 = Unicode 7.0 исключая знака рубль
  • ISO / IEC 10646: 2014 плюс поправка 1 = Unicode 8.0 за исключением знака лари , CJK Unified Ideographs и 41 символа эмоций (смайликов)
  • ISO / IEC 10646: 2014 плюс поправки 1 и 2 = Unicode 9.0 за исключением Adlam, NEWA,японских телевизионных символов и 74 символов эмоций (смайликов)

Источники