Универсальный набор кодированных символов
Эта статья нуждается в дополнительных цитатах для проверки . ( апрель 2020 г. ) |
Псевдоним(а) | UCS, Юникод |
---|---|
Язык(и) | Международный |
Стандартный | ИСО/МЭК 10646 |
Форматы кодирования | UTF-8 , UTF-16 , ГБ 18030 Реже : UTF-32 , BOCU , SCSU , UTF-7. |
Предшественник | ISO/IEC 8859 , ISO/IEC 2022 и другие. |
Универсальный набор кодированных символов ( UCS , Unicode ) — это стандартный набор символов , определенный международным стандартом ISO / IEC 10646, Информационные технологии — Универсальный набор кодированных символов (UCS) (плюс поправки к этому стандарту), который является основой многих кодировки символов , улучшающиеся по мере добавления символов из ранее не представленных систем типизации.
UCS имеет более 1,1 миллиона возможных кодовых точек, доступных для использования/распределения, но только первые 65 536, то есть базовая многоязычная плоскость (BMP), вошли в общее использование до 2000 года. Эта ситуация начала меняться, когда Китайская Народная Республика ( КНР) в 2006 году постановила, что все программное обеспечение, продаваемое в ее юрисдикции, должно поддерживать GB 18030 . Это требовало программного обеспечения, предназначенного для продажи в КНР, для выхода за рамки БМП. [ нужны разъяснения ]
Система намеренно оставляет множество кодов, не присвоенных символам, даже в BMP. Это делается для того, чтобы обеспечить возможность дальнейшего расширения или минимизировать конфликты с другими формами кодирования.
В исходной редакции UCS была определена UTF-16 , расширение UCS-2, для представления кодовых точек вне BMP. Диапазон кодовых точек в зоне S (специальной) BMP остается неназначенным символам. UCS-2 запрещает использование кодовых значений для этих кодовых точек, но UTF-16 позволяет использовать их парами. Unicode также принял UTF-16, но в терминологии Unicode элементы верхней полузоны становятся «высокими суррогатами», а элементы нижней полузоны становятся «низкими суррогатами». [ нужны разъяснения ]
Другая кодировка, UTF-32 (ранее называвшаяся UCS-4), использует четыре байта (всего 32 бита) для кодирования одного символа кодового пространства. Таким образом, UTF-32 допускает двоичное представление каждой точки кода (по состоянию на 2024 год) в API и программных приложениях.
История
[ редактировать ]Международная организация по стандартизации (ISO) приступила к созданию универсального набора символов в 1989 году и опубликовала проект ISO 10646 в 1990 году. Хью МакГрегор Росс был одним из его главных архитекторов.
Эта работа происходила независимо от разработки стандарта Unicode , который разрабатывался с 1987 года компаниями Xerox и Apple .
Первоначальный проект ISO 10646 заметно отличался от действующего стандарта. Он определил:
- 128 групп
- 256 самолетов
- 256 рядов
- 256 ячеек,
кажущаяся общая длина составляет 2 147 483 648 символов, но на самом деле стандарт мог кодировать только 679 477 248 символов, поскольку политика запрещала байтовые значения управляющих кодов C0 и C1 (от 0x00 до 0x1F и от 0x80 до 0x9F в шестнадцатеричной записи) в любом из четырех байтов. задание группы, плоскости, строки и ячейки. Например, латинская заглавная буква A находилась в группе 0x20, плоскости 0x20, строке 0x20, ячейке 0x41.
Символы этого изначального стандарта ISO/IEC 10646 можно закодировать одним из трех способов:
- UCS-4, четыре байта на каждый символ, что обеспечивает простое кодирование всех символов;
- UCS-2, два байта на каждый символ, позволяющий кодировать первую плоскость, 0x20, базовую многоязычную плоскость, содержащую первые 36 864 кодовых точки, напрямую, а также другие плоскости и группы путем переключения на них с помощью ISO/IEC 2022 ; escape-последовательностей
- UTF-1 , который кодирует все символы в последовательности байтов различной длины (от 1 до 5 байт, каждый из которых не содержит управляющих кодов).
Таким образом, в 1990 году существовало две инициативы по созданию универсального набора символов: Unicode с 16 битами для каждого символа (65 536 возможных символов) и ISO/IEC 10646. Компании-разработчики программного обеспечения отказались принять требования стандарта 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.
Отличия от Юникод
[ редактировать ]ISO/IEC 10646 и Unicode имеют идентичный репертуар и номера — в обоих стандартах существуют одни и те же символы с одинаковыми номерами, хотя Unicode выпускает новые версии и чаще добавляет новые символы. В Unicode есть правила и спецификации, выходящие за рамки ISO/IEC 10646. ISO/IEC 10646 — это простая карта символов, расширение предыдущих стандартов, таких как ISO/IEC 8859 . Напротив, Unicode добавляет правила сортировки , нормализации форм и двунаправленный алгоритм для сценариев с письмом справа налево, таких как арабский и иврит. Для взаимодействия между платформами, особенно если используются двунаправленные сценарии, недостаточно поддерживать ISO/IEC 10646; Юникод должен быть реализован.
Для поддержки этих правил и алгоритмов Unicode добавляет множество свойств к каждому символу в наборе, например свойства, определяющие класс двунаправленного письма по умолчанию, и свойства, определяющие, как символ сочетается с другими символами. Если символ представляет числовое значение, например европейское число «8» или обычную дробь «¼», это числовое значение также добавляется как свойство символа. Юникод предполагает, что эти свойства будут поддерживать совместимую обработку текста на разных языках.
Некоторые приложения поддерживают символы ISO/IEC 10646, но не полностью поддерживают Unicode. Одно из таких приложений, Xterm , может правильно отображать все символы ISO/IEC 10646, которые имеют однозначное сопоставление символов с глифами. [ нужны разъяснения ] и однонаправленность. Он может обрабатывать некоторые комбинированные знаки простыми методами перечеркивания, но не может отображать иврит (двунаправленный), деванагари (один символ для многих глифов) или арабский язык (обе функции). Большинство приложений с графическим пользовательским интерфейсом используют стандартные процедуры рисования текста ОС, которые обрабатывают такие сценарии, хотя сами приложения по-прежнему не всегда обрабатывают их правильно.
Ссылка на универсальный кодированный набор символов
[ редактировать ]ISO/IEC 10646 , общая неофициальная ссылка на семейство стандартов ISO/IEC 10646, приемлема в большинстве случаев. И хотя это отдельный стандарт, термин Unicode столь же часто неофициально используется при обсуждении UCS. Однако в любых нормативных ссылках на UCS как на публикацию должен указываться год издания в форме ISO/IEC 10646:{год} , например: ISO/IEC 10646:2014 .
Связь с Юникодом
[ редактировать ]С 1991 года Консорциум Unicode и ISO / IEC разработали Стандарт 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.
- ISO/IEC 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 = Юникод 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 = Unicode 3.2.
- ISO/IEC 10646:2003 = Юникод 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 = Юникод 6.1.
- ISO/IEC 10646:2012 = Unicode 6.2, за исключением знака турецкой лиры , который включен в поправку 1.
- ISO/IEC 10646:2012 = Unicode 6.3 , за исключением знака турецкой лиры, который включен в поправку 1, и пяти двунаправленных управляющих символов (знак арабской буквы, выделение слева направо, выделение справа налево, первый сильный изолированный символ, всплывающее окно). Directional Isolate), которые включены в Поправку 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 хентайганы символов , 3 символов площади Занабазар и 56 символов эмодзи.
- 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 = Юникод 13.0
- ISO/IEC 10646:2021 = Юникод 14.0
См. также
[ редактировать ]Сопутствующие стандарты:
- ISO/IEC 646 (позиции от 0 до 127 такие же, как в ISO/IEC 10646 и Unicode, а номера 646 и 10646 аналогичны)
- ISO/IEC 2022 Информационные технологии. Структура кода символов и методы расширения.
- Коды управления ISO/IEC 6429 C0 и C1
- ISO/IEC 8859 (позиции от 0 до 255 в UCS и Unicode такие же, как в ISO/IEC 8859-1, псевдоним ISO Latin 1)
- ISO/IEC 14651 Информационные технологии. Международный порядок и сравнение строк.
- Коды ISO 15924 для представления названий сценариев (каждый символ связан с одним из этих сценариев)
- Сравнение кодировок Unicode
- Список ссылок на символьные сущности XML и HTML
- Список шрифтов Юникода
- Персонажи универсального набора символов
- ИСО/МЭК ОТК 1/ПК 2
Ссылки
[ редактировать ]- ^ Пайк, Роб (3 апреля 2003 г.). «История UTF-8» . Архивировано из оригинала 23 мая 2016 г.
Внешние ссылки
[ редактировать ]- Общедоступные стандарты (ISO) – включают копию ISO/IEC 10646:2020/Amd. 1:2023(Р)
- ISO/IEC JTC1/SC2/WG2 , рабочая группа, отвечающая за ISO 10646.
- Часто задаваемые вопросы по UTF-8 и Unicode
- Бесплатные шрифты, редакторы и документация SIL.
- Простой, но приятный пример UTF-8, проверяющий возможности вашего веб-браузера и шрифтов.
- Проблемы с набором символов для ADA 9x с октября 1989 года, в которых подробно рассказывается об оригинальном DIS ISO-10646, выпущенном до слияния.