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

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

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

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

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

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

ISO / IEC 10646 определяет несколько символов формы кодирования для универсального набора кодированных символов. Самый простой, UCS-2,[Примечание 1] использует один значение кода (определяется как число, одно или несколько из которых представляют собой кодовую точку в целом, но для UCS-2 это строго одно значение кода, которое представляет собой кодовую точку) от 0 до 65 535 для каждого символа, и допускает ровно два байты (один 16-кусочек word), чтобы представить это значение. Таким образом, 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, использует четыре байта (всего 32 бита) для кодирования одного символа кодовое пространство. Несмотря на то, что Unicode ограничивает кодовое пространство верхним пределом 10FFFF. Стандарт ISO / IEC 10646 заявил, что все будущие присвоения символов будут происходить в диапазонах до 0x7FFFFFFF.шестнадцатеричный).[нужна цитата ] UCS-4 позволяет представлять каждое значение точно в четыре байта (одно 32-битное слово). Таким образом, UCS-4 позволяет двоичное представление каждой кодовой точки в UCS, включая те, которые находятся за пределами BMP. Как и в UCS-2, каждый закодированный символ имеет фиксированную длину в байтах, что упрощает манипулирование, но, конечно, для него требуется вдвое больше памяти, чем для UCS-2.

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

Смотрите также Сравнение кодировок Unicode.

История

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

  • 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 escape-последовательности;
  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, хотя он почти не использует внутренние данные внешних программ.

Роб Пайк и Кен Томпсон, дизайнеры План 9 операционная система, разработала новое, быстрое и хорошо продуманное кодирование смешанной ширины, которое стало называться UTF-8,[2]в настоящее время самая популярная кодировка 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, у которых есть взаимно однозначное преобразование символа в глиф[требуется разъяснение ] и однонаправленность. Он может обрабатывать некоторые комбинированные метки простыми методами перерисовки, но не может отображать иврит (двунаправленный), Деванагари (от одного символа ко многим глифам) или арабского (обе функции). Наиболее GUI приложения используют стандартные процедуры рисования текста ОС, которые обрабатывают такие сценарии, хотя сами приложения по-прежнему не всегда обрабатывают их правильно.

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

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

Связь с Unicode

С 1991 г. Консорциум Unicode и ISO разработали Стандарт Юникода («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
  • ИСО / МЭК 10646-1: 1993 плюс поправки с 5 по 7 = Юникод 2.0
  • ИСО / МЭК 10646-1: 1993 плюс поправки с 5 по 7 = Юникод 2.1 без учета Знак евро и Символ замены объекта, которые включены в Поправку 18
  • ИСО / МЭК 10646-1: 2000 = Юникод 3.0
  • ISO / IEC 10646-1: 2000 и ISO / IEC 10646-2: 2001 = Юникод 3.1
  • ISO / IEC 10646-1: 2000 плюс поправка 1 и ISO / IEC 10646-2: 2001 = Юникод 3.2
  • ИСО / МЭК 10646: 2003 = Юникод 4.0
  • ISO / IEC 10646: 2003 плюс поправка 1 = Юникод 4.1
  • ISO / IEC 10646: 2003 плюс поправки 1-2 = Юникод 5.0 исключая письма деванагари GGA, JJA, DDDA и BBA, которые включены в Поправку 3
  • ISO / IEC 10646: 2003 плюс поправки с 1 по 4 = Юникод 5.1
  • ISO / IEC 10646: 2003 плюс поправки с 1 по 6 = Юникод 5.2
  • ISO / IEC 10646: 2003 плюс поправки с 1 по 8 = ISO / IEC 10646: 2011 = Юникод 6.0 без учета Индийская рупия знак
  • ISO / IEC 10646: 2012 = Юникод 6.1
  • ISO / IEC 10646: 2012 = Юникод 6.2 без учета Знак турецкой лиры, который включен в Поправку 1
  • ISO / IEC 10646: 2012 = Юникод 6.3 без учета Знак турецкой лиры, который включен в Поправку 1, и пять двунаправленных управляющих символов (арабская буква, изоляция слева направо, изоляция справа налево, первая строгая изоляция, Pop Directional Isolate), которые включены в поправку 2
  • ISO / IEC 10646: 2012 плюс поправки 1 и 2 = Юникод 7.0 исключая Знак рубля
  • ISO / IEC 10646: 2014 плюс поправка 1 = Юникод 8.0 исключая Знак лари, девять унифицированных идеографов CJK и 41 символ смайликов
  • ISO / IEC 10646: 2014 плюс поправки 1 и 2 = Юникод 9.0 исключая Adlam, Newa, символы японского телевидения, а также 74 смайлика и символа
  • ИСО / МЭК 10646: 2017 = Юникод 10.0 без 285 Hentaigana персонажей, 3 символа Квадрата Занабазара и 56 символов эмодзи

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

Примечания

  1. ^ Видеть UTF-16 для более подробного обсуждения UCS-2.

Рекомендации

  1. ^ «Обзор использования кодировок символов с разбивкой по рейтингам». w3techs.com. Получено 2019-04-01.
  2. ^ Пайк, Роб (2003-04-03). "История UTF-8". В архиве из оригинала от 23.05.2016.

внешняя ссылка