Универсальный набор кодированных символов - Universal Coded Character Set

Универсальный набор кодированных символов
Псевдоним (а) ПСК, Юникод
Язык (и) Международный
Стандарт ИСО / МЭК 10646
Форматы кодирования UTF-8 , UTF-16 , GB18030
Менее распространенные : UTF-32 , BOCU , ГТСУ , UTF-7
Предшествует ISO 8859 , ISO 2022 и другие.

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

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

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

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

ISO / IEC 10646 определяет три формы кодирования символов (и семь схем кодирования ) для универсального набора кодированных символов. UCS-2 больше не является одним из них, он был самым простым и теперь устарел, использует одно значение кода (определенное как число, одно или несколько из которых представляют собой кодовую точку в целом, но для 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 элементы зоны с высокой половиной становятся «суррогатами с высокой половиной», а элементы с нижней половиной зоны - с «суррогатами с низкой степенью».

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

В настоящее время преобладающей кодировкой UCS является UTF-8 , кодировка переменной ширины, разработанная для обратной совместимости с ASCII и для предотвращения осложнений, связанных с порядком байтов и метками порядка байтов в UTF-16 и UTF-32. Более 97% всех веб-страниц закодированы в UTF-8. Инженерная группа Интернета (IETF) требует, чтобы все Интернет-протоколы определяли кодировку, используемую для символьных данных, а поддерживаемые кодировки символов должны включать UTF-8. Консорциум Internet Mail (IMC) рекомендует, чтобы все программы электронной почты могли отображать и создавать почту с использованием UTF-8. Он также все чаще используется в качестве кодировки символов по умолчанию в операционных системах, языках программирования, API и программных приложениях.

История

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

  • 128 групп
  • 256 самолетов
  • 256 рядов
  • 256 ячеек,

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

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

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

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

Между тем, с течением времени ситуация в самом стандарте Unicode изменилась: 65 536 символов оказались недостаточными, а стандарт начиная с версии 2.0 поддерживает кодирование 1112 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 добавляет множество свойств к каждому символу в наборе, таких как свойства, определяющие класс двунаправленного текста по умолчанию, и свойства для определения того, как этот символ сочетается с другими символами. Если символ представляет собой числовое значение, такое как европейское число «8» или вульгарная дробь «», это числовое значение также добавляется как свойство символа. Unicode предполагает, что эти свойства поддерживают совместную обработку текста на разных языках.

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

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

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

Связь с Unicode

С 1991 года Консорциум Unicode и ISO совместно разработали стандарт 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.

  • ИСО / МЭК 10646-1: 1993 = Юникод 1.1
  • ISO / IEC 10646-1: 1993 плюс поправки с 5 по 7 = Unicode 2.0
  • ISO / IEC 10646-1: 1993 плюс поправки с 5 по 7 = Unicode 2.1, исключая знак евро и символ замены объекта , которые включены в поправку 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, за исключением букв Деванагари GGA, JJA, DDDA и BBA, которые включены в Поправку 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, и пяти двунаправленных управляющих символов (арабская буква, изоляция слева направо, изоляция справа налево, первая строгая изоляция, Pop Направленный изолятор), которые включены в Поправку 2.
  • ISO / IEC 10646: 2012 плюс поправки 1 и 2 = Unicode 7.0 без знака рубля
  • ISO / IEC 10646: 2014 плюс поправка 1 = Unicode 8.0, исключая знак Лари , девять унифицированных иероглифов CJK и 41 символ эмодзи.
  • ISO / IEC 10646: 2014 плюс поправки 1 и 2 = Unicode 9.0, за исключением Adlam, Newa, японских телевизионных символов, а также 74 смайликов и символов.
  • ISO / IEC 10646: 2017 = Unicode 10.0, исключая 285 символов Hentaigana , 3 символа Zanabazar Square и 56 символов emoji.
  • ISO / IEC 10646: 2017 плюс поправка 1 = Unicode 11.0, за исключением 46 заглавных грузинских букв мтаврули, 5 унифицированных иероглифов CJK и 66 символов эмодзи.
  • ISO / IEC 10646: 2017 плюс поправки 1 и 2 = Unicode 12.0, исключая 62 дополнительных символа
  • ISO / IEC 10646: 2020 = Unicode 13.0
  • ISO / IEC 10646: 2021 = Unicode 14.0

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

Примечания

использованная литература

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