Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Универсальный 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, [Примечание 1] используется одно значение кода (определенное как число, одно или несколько из которых представляют кодовую точку в целом, но для 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 , использует четыре байта (всего 32 бита) для кодирования одного символа кодового пространства . Несмотря на то, что Unicode ограничивает кодовое пространство верхним пределом 10FFFF. В стандарте ISO / IEC 10646 указано, что все будущие присвоения символов будут происходить в диапазонах до 0x7FFFFFFF hex ). [ необходима цитата ] 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 .

История [ править ]

Международная организация по стандартизации (ИСО) устанавливают , чтобы составить универсальный набор символов в 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 миллионов. Кодировка ISO 10646 UCS-4 была включена в стандарт Unicode с ограничением до диапазона UTF-16 и под названием UTF-32 , хотя она почти не используется вне внутренних данных программ.

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

Отличия от Unicode [ править ]

ISO 10646 и 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 :
    • ISO 646 (позиции от 0 до 127 такие же, как в ISO / IEC 10646 и Unicode, а числа 646 и 10646 аналогичны)
    • ISO 2022 Информационные технологии - Структура кода символов и методы расширения
    • Контрольные коды ISO 6429 C0 и C1
    • ISO 8859 (позиции от 0 до 255 UCS и Unicode такие же, как в ISO-8859-1, псевдоним ISO Latin 1)
    • ISO / IEC 14651 Информационные технологии - Международный порядок и сравнение строк
    • Коды ISO 15924 для представления имен скриптов (каждый символ связан с одним из этих скриптов)
  • Сравнение кодировок Unicode
  • Список ссылок на символьные сущности XML и HTML
  • Список шрифтов Unicode
  • Персонажи универсального набора символов
  • ISO / IEC JTC 1 / SC 2

Заметки [ править ]

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

Ссылки [ править ]

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

Внешние ссылки [ править ]

  • Общедоступные стандарты (ISO) - включает копию ISO 10646: 2014 (файл ZIP 129 МБ, выпущен 01.09.2014) и электронные вставки (файл ZIP 1,7 МБ)
  • ISO / IEC JTC1 / SC2 / WG2 , рабочая группа, отвечающая за ISO 10646
  • Часто задаваемые вопросы по UTF-8 и Unicode
  • Бесплатные шрифты, редакторы и документация SIL
  • Простой, но приятный пример UTF-8 для тестирования вашего веб-браузера и возможностей шрифтов.
  • Проблемы с набором символов для ADA 9x с октября 1989 г., в котором подробно рассказывается об исходном DIS ISO-10646, существовавшем до слияния.