Система кодирования юникод. Кодировка Unicode

Юникод

Материал из Википедии - свободной энциклопедии

Перейти к: навигация , поиск

Юнико́д (чаще всего) или Унико́д (англ. Unicode ) - стандарт кодирования символов , позволяющий представить знаки практически всех письменных языков .

Стандарт предложен в 1991 году некоммерческой организацией «Консорциум Юникода» (англ. Unicode Consortium , Unicode Inc . ). Применение этого стандарта позволяет закодировать очень большое число символов из разных письменностей: в документах Unicode могут соседствовать китайские иероглифы , математические символы, буквы греческого алфавита , латиницы и кириллицы , при этом становится ненужным переключение кодовых страниц .

Стандарт состоит из двух основных разделов: универсальный набор символов (англ. UCS, universal character set ) и семейство кодировок (англ . UTF, Unicode transformation format ). Универсальный набор символов задаёт однозначное соответствие символов кодам - элементам кодового пространства, представляющим неотрицательные целые числа. Семейство кодировок определяет машинное представление последовательности кодов UCS.

Коды в стандарте Юникод разделены на несколько областей. Область с кодами от U+0000 до U+007F содержит символы набора ASCII с соответствующими кодами. Далее расположены области знаков различных письменностей, знаки пунктуации и технические символы. Часть кодов зарезервирована для использования в будущем. Под символы кириллицы выделены области знаков с кодами от U+0400 до U+052F, от U+2DE0 до U+2DFF, от U+A640 до U+A69F (см. Кириллица в Юникоде ).

    1 Предпосылки создания и развитие Юникода

    2 Версии Юникода

    3 Кодовое пространство

    4 Система кодирования

    5 Модифицирующие символы

    6 Формы нормализации

    • 6.1 Примеры

    7 Двунаправленное письмо

    8 Представленные символы

    9 ISO/IEC 10646

    10 Способы представления

    • 10.1 UTF-8

      10.2 Порядок байтов

      10.3 Юникод и традиционные кодировки

      10.4 Реализации

    11 Методы ввода

    • 11.1 Microsoft Windows

      11.2 Macintosh

      11.3 GNU/Linux

    12 Проблемы Юникода

    13 «Юникод» или «Уникод»?

    14 См. также

Предпосылки создания и развитие Юникода

К концу 1980-х годов стандартом стали 8-битные символы, при этом существовало множество разных 8-битных кодировок, и постоянно появлялись всё новые. Это объяснялось как постоянным расширением круга поддерживаемых языков, так и стремлением создать кодировку, частично совместимую с какой-нибудь другой (характерный пример - появление альтернативной кодировки для русского языка, обусловленное эксплуатацией западных программ, созданных для кодировки CP437 ). В результате появилось несколько проблем:

Проблема «кракозябр » (отображения документов в неправильной кодировке): её можно было решить либо последовательным внедрением методов указания используемой кодировки, либо внедрением единой для всех кодировки.

Проблема ограниченности набора символов: её можно было решить либо переключением шрифтов внутри документа, либо внедрением «широкой» кодировки. Переключение шрифтов издавна практиковалось в текстовых процессорах , причём часто использовались шрифты с нестандартной кодировкой , т. н. «dingbat fonts» - в итоге при попытке перенести документ в другую систему все нестандартные символы превращались в кракозябры.

Проблема преобразования одной кодировки в другую: её можно было решить либо составлением таблиц перекодировки для каждой пары кодировок, либо использованием промежуточного преобразования в третью кодировку, включающую все символы всех кодировок.

Проблема дублирования шрифтов: традиционно для каждой кодировки делался свой шрифт, даже если эти кодировки частично (или полностью) совпадали по набору символов: эту проблему можно было решить, делая «большие» шрифты, из которых потом выбираются нужные для данной кодировки символы - однако это требует создания единого реестра символов, чтобы определять, чему что соответствует.

Было признано необходимым создание единой «широкой» кодировки. Кодировки с переменной длиной символа, широко использующиеся в Восточной Азии, были признаны слишком сложными в использовании, поэтому было решено использовать символы фиксированной ширины. Использование 32-битных символов казалось слишком расточительным, поэтому было решено использовать 16-битные.

Таким образом, первая версия Юникода представляла собой кодировку с фиксированным размером символа в 16 бит, то есть общее число кодов было 2 16 (65 536). Отсюда происходит практика обозначения символов четырьмя шестнадцатеричными цифрами (например, U+04F0). При этом в Юникоде планировалось кодировать не все существующие символы, а только те, которые необходимы в повседневном обиходе. Редко используемые символы должны были размещаться в «области пользовательских символов» (private use area), которая первоначально занимала коды U+D800…U+F8FF. Чтобы использовать Юникод также и в качестве промежуточного звена при преобразовании разных кодировок друг в друга, в него включили все символы, представленные во всех наиболее известных кодировках.

В дальнейшем, однако, было принято решение кодировать все символы и в связи с этим значительно расширить кодовую область. Одновременно с этим, коды символов стали рассматриваться не как 16-битные значения, а как абстрактные числа, которые в компьютере могут представляться множеством разных способов (см. Способы представления ).

Поскольку в ряде компьютерных систем (например, Windows NT ) фиксированные 16-битные символы уже использовались в качестве кодировки по умолчанию, было решено все наиболее важные знаки кодировать только в пределах первых 65 536 позиций (так называемая англ. basic multilingual plane , BMP ). Остальное пространство используется для «дополнительных символов» (англ. supplementary characters ): систем письма вымерших языков или очень редко используемых китайских иероглифов, математических и музыкальных символов.

Для совместимости со старыми 16-битными системами была изобретена система UTF-16 , где первые 65 536 позиций, за исключением позиций из интервала U+D800…U+DFFF, отображаются непосредственно как 16-битные числа, а остальные представляются в виде «суррогатных пар» (первый элемент пары из области U+D800…U+DBFF, второй элемент пары из области U+DC00…U+DFFF). Для суррогатных пар была использована часть кодового пространства (2048 позиций), ранее отведённого для «символов для частного использования».

Поскольку в UTF-16 можно отобразить только 2 20 +2 16 −2048 (1 112 064) символов, то это число и было выбрано в качестве окончательной величины кодового пространства Юникода.

Хотя кодовая область Юникода была расширена за пределы 2 16 уже в версии 2.0, первые символы в «верхней» области были размещены только в версии 3.1.

Роль этой кодировки в веб-секторе постоянно растёт, на начало 2010 доля веб-сайтов, использующих Юникод, составила около 50 %.

Версии Юникода

По мере изменения и пополнения таблицы символов системы Юникода и выхода новых версий этой системы, - а эта работа ведётся постоянно, поскольку изначально система Юникод включала только Plane 0 - двухбайтные коды, - выходят и новые документы ISO . Система Юникод существует в общей сложности в следующих версиях:

    1.1 (соответствует стандарту ISO/IEC 10646-1:1993 ), стандарт 1991-1995 годов.

    2.0, 2.1 (тот же стандарт ISO/IEC 10646-1:1993 плюс дополнения: «Amendments» с 1-го по 7-е и «Technical Corrigenda» 1 и 2), стандарт 1996 года.

    3.0 (стандарт ISO/IEC 10646-1:2000), стандарт 2000 года.

    3.1 (стандарты ISO/IEC 10646-1:2000 и ISO/IEC 10646-2:2001), стандарт 2001 года.

    3.2, стандарт 2002 года .

    4.0, стандарт 2003 .

    4.01, стандарт 2004 .

    4.1, стандарт 2005 .

    5.0, стандарт 2006 .

    5.1, стандарт 2008 .

    5.2, стандарт 2009 .

    6.0, стандарт 2010 .

    6.1, стандарт 2012 .

    6.2, стандарт 2012 .

Кодовое пространство

Хотя формы записи UTF-8 и UTF-32 позволяют кодировать до 2 31 (2 147 483 648) кодовых позиций, было принято решение использовать лишь 1 112 064 для совместимости с UTF-16. Впрочем, даже и этого на текущий момент более чем достаточно - в версии 6.0 используется чуть менее 110 000 кодовых позиций (109 242 графических и 273 прочих символов).

Кодовое пространство разбито на 17 плоскостей по 2 16 (65536) символов. Нулевая плоскость называется базовой , в ней расположены символы наиболее употребительных письменностей. Первая плоскость используется, в основном, для исторических письменностей, вторая - для редко используемых иероглифов ККЯ , третья зарезервирована для архаичных китайских иероглифов . Плоскости 15 и 16 выделены для частного употребления.

Для обозначения символов Unicode используется запись вида «U+xxxx » (для кодов 0…FFFF), или «U+xxxxx » (для кодов 10000…FFFFF), или «U+xxxxxx » (для кодов 100000…10FFFF), где xxx - шестнадцатеричные цифры. Например, символ «я» (U+044F) имеет код 044F 16 = 1103 10 .

Система кодирования

Универсальная система кодирования (Юникод) представляет собой набор графических символов и способ их кодирования для компьютерной обработки текстовых данных.

Графические символы - это символы, имеющие видимое изображение. Графическим символам противопоставляются управляющие символы и символы форматирования.

Графические символы включают в себя следующие группы:

  • знаки пунктуации;

    специальные знаки (математические , технические, идеограммы и пр.);

    разделители.

Юникод - это система для линейного представления текста. Символы, имеющие дополнительные над- или подстрочные элементы, могут быть представлены в виде построенной по определённым правилам последовательности кодов (составной вариант, composite character) или в виде единого символа (монолитный вариант, precomposed character).

Модифицирующие символы

Представление символа «Й» (U+0419) в виде базового символа «И» (U+0418) и модифицирующего символа « ̆» (U+0306)

Графические символы в Юникоде подразделяются на протяжённые и непротяжённые (бесширинные). Непротяжённые символы при отображении не занимают места в строке . К ним относятся, в частности, знаки ударения и прочие диакритические знаки . Как протяжённые, так и непротяжённые символы имеют собственные коды. Протяжённые символы иначе называются базовыми (англ. base characters ), а непротяжённые - модифицирующими (англ. combining characters ); причём последние не могут встречаться самостоятельно. Например, символ «á» может быть представлен как последовательность базового символа «a» (U+0061) и модифицирующего символа « ́» (U+0301) или как монолитный символ «á» (U+00C1).

Особый тип модифицирующих символов - селекторы варианта начертания (англ. variation selectors ). Они действуют только на те символы, для которых такие варианты определены. В версии 5.0 варианты начертания определены для ряда математических символов, для символов традиционного монгольского алфавита и для символов монгольского квадратного письма .

Формы нормализации

Поскольку одни и те же символы можно представить различными кодами, что иногда затрудняет обработку, существуют процессы нормализации, предназначенные для приведения текста к определённому стандартному виду.

В стандарте Юникода определены 4 формы нормализации текста:

    Форма нормализации D (NFD) - каноническая декомпозиция. В процессе приведения текста в эту форму все составные символы рекурсивно заменяются на несколько составных, в соответствии с таблицами декомпозиции.

    Форма нормализации C (NFC) - каноническая декомпозиция с последующей канонической композицией. Сначала текст приводится к форме D, после чего выполняется каноническая композиция - текст обрабатывается от начала к концу и выполняются следующие правила:

    • Символ S является начальным , если он имеет нулевой класс модификации в базе символов Юникода.

      В любой последовательности символов, стартующей с начального символа S, символ C блокируется от S, если и только если между S и C есть какой-либо символ B, который или является начальным, или имеет одинаковый или больший класс модификации, чем C. Это правило распространяется только на строки, прошедшие каноническую декомпозицию.

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

      Символ X может быть первично совмещён с символом Y, если и только если существует первичный композит Z, канонически эквивалентный последовательности .

      Если очередной символ C не блокируется последним встреченным начальным базовым символом L и он может быть успешно первично совмещён с ним, то L заменяется на композит L-C, а C удаляется.

    Форма нормализации KD (NFKD) - совместимая декомпозиция. При приведении в эту форму все составные символы заменяются, используя как канонические карты декомпозиции Юникода, так и совместимые карты декомпозиции, после чего результат ставится в каноническом порядке.

    Форма нормализации KC (NFKC) - совместимая декомпозиция с последующей канонической композицией.

Термины «композиция» и «декомпозиция» понимают под собой соответственно соединение или разложение символов на составные части.

Примеры

Исходный текст

\u0410, \u0401, \u0419

\u0410, \u0415\u0308, \u0418\u0306

\u0410, \u0401, \u0419

Двунаправленное письмо

Стандарт Юникод поддерживает письменности языков как с направлением написания слева направо (англ. left - to - right , LTR ), так и с написанием справа налево (англ. right - to - left , RTL ) - например, арабское и еврейское письмо. В обоих случаях символы хранятся в «естественном» порядке; их отображение с учётом нужного направления письма обеспечивается приложением.

Кроме того, Юникод поддерживает комбинированные тексты, сочетающие фрагменты с разным направлением письма. Данная возможность называется двунаправленность (англ. bidirectional text , BiDi ). Некоторые упрощённые обработчики текста (например, в сотовых телефонах) могут поддерживать Юникод, но не иметь поддержки двунаправленности. Все символы Юникода поделены на несколько категорий: пишущиеся слева направо, пишущиеся справа налево, и пишущиеся в любом направлении. Символы последней категории (в основном это знаки пунктуации ) при отображении принимают направление окружающего их текста.

Представленные символы

Основная статья: Символы, представленные в Юникоде

Схема базовой плоскости Unicode, см. описание

Юникод включает практически все современные письменности , в том числе:

    арабскую ,

    армянскую ,

    бенгальскую ,

    бирманскую ,

    глаголицу ,

    греческую ,

    грузинскую ,

    деванагари ,

    еврейскую ,

    кириллицу ,

    китайскую (китайские иероглифы активно используются в японском языке , а также достаточно редко в корейском ),

    коптскую ,

    кхмерскую ,

    латинскую ,

    тамильскую ,

    корейскую (хангыль) ,

    чероки ,

    эфиопскую ,

    японскую (которая включает в себя кроме китайских иероглифов ещё и слоговую азбуку ),

и другие.

С академическими целями добавлены многие исторические письменности, в том числе: германские руны , древнетюркские руны , древнегреческая , египетские иероглифы , клинопись , письменность майя , этрусский алфавит .

В Юникоде представлен широкий набор математических и музыкальных символов, а также пиктограмм .

Однако в Юникод принципиально не включаются логотипы компаний и продуктов, хотя они и встречаются в шрифтах (например, логотип Apple в кодировке MacRoman (0xF0) или логотип Windows в шрифте Wingdings (0xFF)). В юникодовских шрифтах логотипы должны размещаться только в области пользовательских символов.

ISO/IEC 10646

Консорциум Юникода работает в тесной связи с рабочей группой ISO/IEC/JTC1/SC2/WG2, которая занимается разработкой международного стандарта 10646 (ISO /IEC 10646). Между стандартом Юникода и ISO/IEC 10646 установлена синхронизация, хотя каждый стандарт использует свою терминологию и систему документации.

Сотрудничество Консорциума Юникода с Международной организацией по стандартизации (англ. International Organization for Standardization, ISO ) началось в 1991 году . В 1993 году ISO выпустила стандарт DIS 10646.1. Для синхронизации с ним Консорциум утвердил стандарт Юникода версии 1.1, в который были внесены дополнительные символы из DIS 10646.1. В результате значения закодированных символов в Unicode 1.1 и DIS 10646.1 полностью совпали.

В дальнейшем сотрудничество двух организаций продолжилось. В 2000 году стандарт Unicode 3.0 был синхронизирован с ISO/IEC 10646-1:2000. Предстоящая третья версия ISO/IEC 10646 будет синхронизирована с Unicode 4.0. Возможно, эти спецификации даже будут опубликованы как единый стандарт.

Аналогично форматам UTF-16 и UTF-32 в стандарте Юникода, стандарт ISO/IEC 10646 также имеет две основные формы кодирования символов: UCS-2 (2 байта на символ, аналогично UTF-16) и UCS-4 (4 байта на символ, аналогично UTF-32). UCS значит универсальный многооктетный (многобайтовый) кодированный набор символов (англ. universal multiple - octet coded character set ). UCS-2 можно считать подмножеством UTF-16 (UTF-16 без суррогатных пар), а UCS-4 является синонимом для UTF-32.

Способы представления

Юникод имеет несколько форм представления (англ. Unicode transformation format, UTF ): UTF-8 , UTF-16 (UTF-16BE, UTF-16LE) и UTF-32 (UTF-32BE, UTF-32LE). Была разработана также форма представления UTF-7 для передачи по семибитным каналам, но из-за несовместимости с ASCII она не получила распространения и не включена в стандарт. 1 апреля 2005 года были предложены две шуточные формы представления: UTF-9 и UTF-18 (RFC 4042 ).

В Microsoft Windows NT и основанных на ней системах Windows 2000 и Windows XP в основном используется форма UTF-16LE. В UNIX -подобных операционных системах GNU/Linux , BSD и Mac OS X принята форма UTF-8 для файлов и UTF-32 или UTF-8 для обработки символов в оперативной памяти .

Punycode - другая форма кодирования последовательностей Unicode-символов в так называемые ACE-последовательности, которые состоят только из алфавитно-цифровых символов, как это разрешено в доменных именах.

Основная статья: UTF-8

UTF-8 - представление Юникода, обеспечивающее наилучшую совместимость со старыми системами, использовавшими 8-битные символы. Текст, состоящий только из символов с номером меньше 128, при записи в UTF-8 превращается в обычный текст ASCII . И наоборот, в тексте UTF-8 любой байт со значением меньше 128 изображает символ ASCII с тем же кодом. Остальные символы Юникода изображаются последовательностями длиной от 2 до 6 байт (на деле, только до 4 байт, поскольку в Юникоде нет символов с кодом больше 10FFFF, и вводить их в будущем не планируется), в которых первый байт всегда имеет вид 11xxxxxx, а остальные - 10xxxxxx.

Формат UTF-8 был изобретён 2 сентября 1992 года Кеном Томпсоном и Робом Пайком и реализован в Plan 9 . Сейчас стандарт UTF-8 официально закреплён в документах RFC 3629 и ISO/IEC 10646 Annex D.

Символы UTF-8 получаются из Unicode следующим образом :

0x00000000 - 0x0000007F: 0xxxxxxx

0x00000080 - 0x000007FF: 110xxxxx 10xxxxxx

0x00000800 - 0x0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx

0x00010000 - 0x001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

Теоретически возможны, но не включены в стандарт также:

0x00200000 - 0x03FFFFFF: 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

0x04000000 - 0x7FFFFFFF: 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

Несмотря на то, что UTF-8 позволяет указать один и тот же символ несколькими способами, только наиболее короткий из них правильный. Остальные формы должны отвергаться по соображениям безопасности.

Порядок байтов

В потоке данных UTF-16 старший байт может записываться либо перед младшим (англ. UTF-16 little-endian ), либо после младшего (англ . UTF-16 big-endian ). Аналогично существует два варианта четырёхбайтной кодировки - UTF-32LE и UTF-32BE.

Для определения формата представления Юникода в начало текстового файла записывается сигнатура - символ U+FEFF (неразрывный пробел с нулевой шириной), также именуемый меткой порядка байтов (англ. byte order mark , BOM ). Это позволяет различать UTF-16LE и UTF-16BE, поскольку символа U+FFFE не существует. Также этот способ иногда применяется для обозначения формата UTF-8, хотя к этому формату и неприменимо понятие порядка байтов. Файлы, следующие этому соглашению, начинаются с таких последовательностей байтов:

К сожалению, этот способ не позволяет надёжно различать UTF-16LE и UTF-32LE, поскольку символ U+0000 допускается Юникодом (хотя реальные тексты редко начинаются с него).

Файлы в кодировках UTF-16 и UTF-32, не содержащие BOM, должны иметь порядок байтов big-endian (unicode.org ).

Юникод и традиционные кодировки

Внедрение Юникода привело к изменению подхода к традиционным 8-битным кодировкам. Если раньше кодировка задавалась шрифтом, то теперь она задаётся таблицей соответствия между данной кодировкой и Юникодом. Фактически 8-битные кодировки превратились в форму представления некоторого подмножества Юникода. Это намного упростило создание программ, которые должны работать с множеством разных кодировок: теперь, чтобы добавить поддержку ещё одной кодировки, надо всего лишь добавить ещё одну таблицу перекодировки в Юникод.

Кроме того, многие форматы данных позволяют вставлять любые символы Юникода, даже если документ записан в старой 8-битной кодировке. Например, в HTML можно использовать коды с амперсандом .

Реализации

Большинство современных операционных систем в той или иной степени обеспечивают поддержку Юникода.

В операционных системах семейства Windows NT для внутреннего представления имён файлов и других системных строк используется двухбайтовая кодировка UTF-16LE. Системные вызовы, принимающие строковые параметры, существуют в однобайтном и двухбайтном вариантах. Подробнее см. в статье .

UNIX -подобные операционные системы, в том числе GNU/Linux , BSD , Mac OS X , используют для представления Юникода кодировку UTF-8. Большинство программ могут работать с UTF-8 как с традиционными однобайтными кодировками, не обращая внимания на то, что символ представляется как несколько последовательных байт. Для работы с отдельными символами строки обычно перекодируются в UCS-4, так что каждому символу соответствует машинное слово .

Одной из первых успешных коммерческих реализаций Юникода стала среда программирования Java . В ней принципиально отказались от 8-битного представления символов в пользу 16-битного. Это решение увеличивало расход памяти, но позволило вернуть в программирование важную абстракцию: произвольный одиночный символ (тип char). В частности, программист мог работать со строкой, как с простым массивом. К сожалению, успех не был окончательным, Юникод перерос ограничение в 16 бит и к версии J2SE 5.0 произвольный символ снова стал занимать переменное число единиц памяти - один char или два (см. суррогатная пара ).

Сейчас большинство языков программирования поддерживают строки Юникода, хотя их представление может различаться в зависимости от реализации.

Методы ввода

Поскольку ни одна раскладка клавиатуры не может позволить вводить все символы Юникода одновременно, от операционных систем и прикладных программ требуется поддержка альтернативных методов ввода произвольных символов Юникода.

Microsoft Windows

Основная статья: Юникод в операционных системах Microsoft

Начиная с Windows 2000 , служебная программа «Таблица символов» (charmap.exe) показывает все символы в ОС и позволяет копировать их в буфер обмена . Похожая таблица есть, например, в Microsoft Word .

Иногда можно набрать шестнадцатеричный код, нажать Alt +X, и код будет заменён на соответствующий символ, например, в WordPad , Microsoft Word. В редакторах Alt+X выполняет и обратное преобразование.

Во многих программах MS Windows, чтобы получить символ Unicode, нужно при нажатой клавише Alt набрать десятичное значение кода символа на цифровой клавиатуре. Например, полезными при наборе кириллических текстов будут комбинации Alt+0171 («) и Alt+0187 (»). Интересны также комбинации Alt+0133 (…) и Alt+0151 (-).

Macintosh

В Mac OS 8.5 и более поздних версиях поддерживается метод ввода, называемый «Unicode Hex Input». При зажатой клавише Option требуется набрать четырёхзначный шестнадцатеричный код требуемого символа. Этот метод позволяет вводить символы с кодами, большими U+FFFF, используя пары суррогатов; такие пары операционной системой будут автоматически заменены на одиночные символы. Этот метод ввода перед использованием нужно активизировать в соответствующем разделе системных настроек и затем выбрать как текущий метод ввода в меню клавиатуры.

Начиная с Mac OS X 10.2, существует также приложение «Character Palette», позволяющее выбирать символы из таблицы, в которой можно выделять символы определённого блока или символы, поддерживаемые конкретным шрифтом.

GNU/Linux

В GNOME также есть утилита «Таблица символов», позволяющая отображать символы определённого блока или системы письма и предоставляющая возможность поиска по названию или описанию символа. Когда код нужного символа известен, его можно ввести в соответствии со стандартом ISO 14755: при зажатых клавишах Ctrl + ⇧ Shift ввести шестнадцатеричный код (начиная с некоторой версии GTK+ ввод кода нужно предварить нажатием клавиши «U» ). Вводимый шестнадцатеричный код может иметь до 32 бит в длину, позволяя вводить любые символы Юникода без использования суррогатных пар.

Поскольку в ряде компьютерных систем (например, Windows NT ) фиксированные 16-битные символы уже использовались в качестве кодировки по умолчанию, было решено все наиболее важные знаки кодировать только в пределах первых 65 536 позиций (так называемая англ. basic multilingual plane, BMP ). Остальное пространство используется для «дополнительных символов» (англ. supplementary characters ): систем письма вымерших языков или очень редко используемых китайских иероглифов, математических и музыкальных символов.

Для совместимости со старыми 16-битными системами была изобретена система UTF-16 , где первые 65 536 позиций, за исключением позиций из интервала U+D800…U+DFFF, отображаются непосредственно как 16-битные числа, а остальные представляются в виде «суррогатных пар» (первый элемент пары из области U+D800…U+DBFF, второй элемент пары из области U+DC00…U+DFFF). Для суррогатных пар была использована часть кодового пространства (2048 позиций), ранее отведённого для «символов для частного использования».

Поскольку в UTF-16 можно отобразить только 2 20 +2 16 −2048 (1 112 064) символов, то это число и было выбрано в качестве окончательной величины кодового пространства Юникода.

Хотя кодовая область Юникода была расширена за пределы 2 16 уже в версии 2.0, первые символы в «верхней» области были размещены только в версии 3.1.

Роль этой кодировки в веб-секторе постоянно растёт, на начало 2010 доля веб-сайтов, использующих Юникод, составила около 50 %.

Версии Юникода

По мере изменения и пополнения таблицы символов системы Юникода и выхода новых версий этой системы, - а эта работа ведётся постоянно, поскольку изначально система Юникод включала только Plane 0 - двухбайтные коды, - выходят и новые документы ISO . Система Юникод существует в общей сложности в следующих версиях:

  • 1.1 (соответствует стандарту ISO/IEC 10646-1:), стандарт 1991-1995 годов.
  • 2.0, 2.1 (тот же стандарт ISO/IEC 10646-1:1993 плюс дополнения: «Amendments» с 1-го по 7-е и «Technical Corrigenda» 1 и 2), стандарт 1996 года.
  • 3.0 (стандарт ISO/IEC 10646-1:2000), стандарт 2000 года.
  • 3.1 (стандарты ISO/IEC 10646-1:2000 и ISO/IEC 10646-2:2001), стандарт 2001 года.
  • 3.2, стандарт 2002 года .
  • 4.0, стандарт .
  • 4.01, стандарт .
  • 4.1, стандарт .
  • 5.0, стандарт .
  • 5.1, стандарт .
  • 5.2, стандарт .
  • 6.0, стандарт .
  • 6.1, стандарт .
  • 6.2, стандарт .
Кодовое пространство

Хотя формы записи UTF-8 и UTF-32 позволяют кодировать до 2 31 (2 147 483 648) кодовых позиций, было принято решение использовать лишь 1 112 064 для совместимости с UTF-16. Впрочем, даже и этого более чем достаточно - сегодня (в версии 6.0) используется чуть менее 110 000 кодовых позиций (109 242 графических и 273 прочих символов).

Кодовое пространство разбито на 17 плоскостей по 2 16 (65536) символов. Нулевая плоскость называется базовой , в ней расположены символы наиболее употребительных письменностей. Первая плоскость используется, в основном, для исторических письменностей, вторая - для редко используемых иероглифов ККЯ , третья зарезервирована для архаичных китайских иероглифов . Плоскости 15 и 16 выделены для частного употребления.

Для обозначения символов Unicode используется запись вида «U+xxxx » (для кодов 0…FFFF), или «U+xxxxx » (для кодов 10000…FFFFF), или «U+xxxxxx » (для кодов 100000…10FFFF), где xxx - шестнадцатеричные цифры. Например, символ «я» (U+044F) имеет код 044F = 1103 .

Система кодирования

Универсальная система кодирования (Юникод) представляет собой набор графических символов и способ их кодирования для компьютерной обработки текстовых данных.

Графические символы - это символы, имеющие видимое изображение. Графическим символам противопоставляются управляющие символы и символы форматирования.

Графические символы включают в себя следующие группы:

  • буквы, содержащиеся хотя бы в одном из обслуживаемых алфавитов ;
  • цифры;
  • знаки пунктуации;
  • специальные знаки (математические , технические, идеограммы и пр.);
  • разделители.

Юникод - это система для линейного представления текста. Символы, имеющие дополнительные над- или подстрочные элементы, могут быть представлены в виде построенной по определённым правилам последовательности кодов (составной вариант, composite character) или в виде единого символа (монолитный вариант, precomposed character).

Модифицирующие символы

Представление символа «Й» (U+0419) в виде базового символа «И» (U+0418) и модифицирующего символа « ̆» (U+0306)

Графические символы в Юникоде подразделяются на протяжённые и непротяжённые (бесширинные). Непротяжённые символы при отображении не занимают места в строке . К ним относятся, в частности, знаки ударения и прочие диакритические знаки . Как протяжённые, так и непротяжённые символы имеют собственные коды. Протяжённые символы иначе называются базовыми (англ. base characters ), а непротяжённые - модифицирующими (англ. combining characters ); причём последние не могут встречаться самостоятельно. Например, символ «á» может быть представлен как последовательность базового символа «a» (U+0061) и модифицирующего символа « ́» (U+0301) или как монолитный символ «á» (U+00C1).

Особый тип модифицирующих символов - селекторы варианта начертания (англ. variation selectors ). Они действуют только на те символы, для которых такие варианты определены. В версии 5.0 варианты начертания определены для ряда математических символов, для символов традиционного монгольского алфавита и для символов монгольского квадратного письма .

Формы нормализации

Поскольку одни и те же символы можно представить различными кодами, что иногда затрудняет обработку, существуют процессы нормализации, предназначенные для приведения текста к определённому стандартному виду.

В стандарте Юникода определены 4 формы нормализации текста:

  • Форма нормализации D (NFD) - каноническая декомпозиция. В процессе приведения текста в эту форму все составные символы рекурсивно заменяются на несколько составных, в соответствии с таблицами декомпозиции.
  • Форма нормализации C (NFC) - каноническая декомпозиция с последующей канонической композицией. Сначала текст приводится к форме D, после чего выполняется каноническая композиция - текст обрабатывается от начала к концу и выполняются следующие правила:
    • Символ S является начальным , если он имеет нулевой класс модификации в базе символов Юникода.
    • В любой последовательности символов, стартующей с начального символа S, символ C блокируется от S, если и только если между S и C есть какой-либо символ B, который или является начальным, или имеет одинаковый или больший класс модификации, чем C. Это правило распространяется только на строки, прошедшие каноническую декомпозицию.
    • Первичным композитом считается символ, у которого есть каноническая декомпозиция в базе символов Юникода (или каноническая декомпозиция для хангыля и он не входит в список исключений).
    • Символ X может быть первично совмещён с символом Y, если и только если существует первичный композит Z, канонически эквивалентный последовательности .
    • Если очередной символ C не блокируется последним встреченным начальным базовым символом L и он может быть успешно первично совмещён с ним, то L заменяется на композит L-C, а C удаляется.
  • Форма нормализации KD (NFKD) - совместимая декомпозиция. При приведении в эту форму все составные символы заменяются, используя как канонические карты декомпозиции Юникода, так и совместимые карты декомпозиции, после чего результат ставится в каноническом порядке.
  • Форма нормализации KC (NFKC) - совместимая декомпозиция с последующей канонической композицией.

Термины «композиция» и «декомпозиция» понимают под собой соответственно соединение или разложение символов на составные части.

Примеры Исходный текст NFD NFC NFKD NFKC
Français Franc\u0327ais Fran\xe7ais Franc\u0327ais Fran\xe7ais
А, Ё, Й \u0410, \u0401, \u0419 \u0410, \u0415\u0308, \u0418\u0306 \u0410, \u0401, \u0419
\u304b\u3099 \u304c \u304b\u3099 \u304c
Henry IV Henry IV Henry IV Henry IV Henry IV
Henry Ⅳ Henry \u2163 Henry \u2163 Henry IV Henry IV
Двунаправленное письмо

Стандарт Юникод поддерживает письменности языков как с направлением написания слева направо (англ. left-to-right, LTR ), так и с написанием справа налево (англ. right-to-left, RTL ) - например, арабское и еврейское письмо. В обоих случаях символы хранятся в «естественном» порядке; их отображение с учётом нужного направления письма обеспечивается приложением.

Кроме того, Юникод поддерживает комбинированные тексты, сочетающие фрагменты с разным направлением письма. Данная возможность называется двунаправленность (англ. bidirectional text, BiDi ). Некоторые упрощённые обработчики текста (например, в сотовых телефонах) могут поддерживать Юникод, но не иметь поддержки двунаправленности. Все символы Юникода поделены на несколько категорий: пишущиеся слева направо, пишущиеся справа налево, и пишущиеся в любом направлении. Символы последней категории (в основном это знаки пунктуации) при отображении принимают направление окружающего их текста.

Представленные символы

Юникод включает практически все современные письменности , в том числе:

и другие.

С академическими целями добавлены многие исторические письменности, в том числе: руны , древнегреческая , египетские иероглифы , клинопись , письменность майя , этрусский алфавит .

В Юникоде представлен широкий набор математических и музыкальных символов, а также пиктограмм .

Однако в Юникод принципиально не включаются логотипы компаний и продуктов, хотя они и встречаются в шрифтах (например, логотип Apple в кодировке MacRoman (0xF0) или логотип Windows в шрифте Wingdings (0xFF)). В юникодовских шрифтах логотипы должны размещаться только в области пользовательских символов.

ISO/IEC 10646

Консорциум Юникода работает в тесной связи с рабочей группой ISO/IEC/JTC1/SC2/WG2, которая занимается разработкой международного стандарта 10646 (ISO /IEC 10646). Между стандартом Юникода и ISO/IEC 10646 установлена синхронизация, хотя каждый стандарт использует свою терминологию и систему документации.

Сотрудничество Консорциума Юникода с Международной организацией по стандартизации (англ. International Organization for Standardization, ISO ) началось в 1991 году . В 1993 году ISO выпустила стандарт DIS 10646.1. Для синхронизации с ним Консорциум утвердил стандарт Юникода версии 1.1, в который были внесены дополнительные символы из DIS 10646.1. В результате значения закодированных символов в Unicode 1.1 и DIS 10646.1 полностью совпали.

В дальнейшем сотрудничество двух организаций продолжилось. В 2000 году стандарт Unicode 3.0 был синхронизирован с ISO/IEC 10646-1:2000. Предстоящая третья версия ISO/IEC 10646 будет синхронизирована с Unicode 4.0. Возможно, эти спецификации даже будут опубликованы как единый стандарт.

Аналогично форматам UTF-16 и UTF-32 в стандарте Юникода, стандарт ISO/IEC 10646 также имеет две основные формы кодирования символов: UCS-2 (2 байта на символ, аналогично UTF-16) и UCS-4 (4 байта на символ, аналогично UTF-32). UCS значит универсальный многооктетный (многобайтовый) кодированный набор символов (англ. universal multiple-octet coded character set ). UCS-2 можно считать подмножеством UTF-16 (UTF-16 без суррогатных пар), а UCS-4 является синонимом для UTF-32.

Способы представления

Юникод имеет несколько форм представления (англ. Unicode transformation format, UTF ): UTF-8 , UTF-16 (UTF-16BE, UTF-16LE) и UTF-32 (UTF-32BE, UTF-32LE). Была разработана также форма представления UTF-7 для передачи по семибитным каналам, но из-за несовместимости с ASCII она не получила распространения и не включена в стандарт. 1 апреля 2005 года были предложены две шуточные формы представления: UTF-9 и UTF-18 (RFC 4042).

Unicode UTF-8: 0x00000000 - 0x0000007F: 0xxxxxxx 0x00000080 - 0x000007FF: 110xxxxx 10xxxxxx 0x00000800 - 0x0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx 0x00010000 - 0x001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

Теоретически возможны, но не включены в стандарт также:

0x00200000 - 0x03FFFFFF: 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 0x04000000 - 0x7FFFFFFF: 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

Несмотря на то, что UTF-8 позволяет указать один и тот же символ несколькими способами, только наиболее короткий из них правильный. Остальные формы должны отвергаться по соображениям безопасности.

Порядок байтов

В потоке данных UTF-16 старший байт может записываться либо перед младшим (англ. UTF-16 big-endian ), либо после младшего (англ. UTF-16 little-endian ). Аналогично существует два варианта четырёхбайтной кодировки - UTF-32BE и UTF-32LE.

Для определения формата представления Юникода в начало текстового файла записывается сигнатура - символ U+FEFF (неразрывный пробел с нулевой шириной), также именуемый меткой порядка байтов (англ. byte order mark, BOM ). Это позволяет различать UTF-16LE и UTF-16BE, поскольку символа U+FFFE не существует. Также этот способ иногда применяется для обозначения формата UTF-8, хотя к этому формату и неприменимо понятие порядка байтов. Файлы, следующие этому соглашению, начинаются с таких последовательностей байтов:

UTF-8 EF BB BF UTF-16BE FE FF UTF-16LE FF FE UTF-32BE 00 00 FE FF UTF-32LE FF FE 00 00

К сожалению, этот способ не позволяет надёжно различать UTF-16LE и UTF-32LE, поскольку символ U+0000 допускается Юникодом (хотя реальные тексты редко начинаются с него).

Файлы в кодировках UTF-16 и UTF-32, не содержащие BOM, должны иметь порядок байтов big-endian (unicode.org).

Юникод и традиционные кодировки

Внедрение Юникода привело к изменению подхода к традиционным 8-битным кодировкам. Если раньше кодировка задавалась шрифтом, то теперь она задаётся таблицей соответствия между данной кодировкой и Юникодом. Фактически 8-битные кодировки превратились в форму представления некоторого подмножества Юникода. Это намного упростило создание программ, которые должны работать с множеством разных кодировок: теперь, чтобы добавить поддержку ещё одной кодировки, надо всего лишь добавить ещё одну таблицу перекодировки в Юникод.

Кроме того, многие форматы данных позволяют вставлять любые символы Юникода, даже если документ записан в старой 8-битной кодировке. Например, в HTML можно использовать коды с амперсандом .

Реализации

Большинство современных операционных систем в той или иной степени обеспечивают поддержку Юникода.

Одной из первых успешных коммерческих реализаций Юникода стала среда программирования Java . В ней принципиально отказались от 8-битного представления символов в пользу 16-битного. Сейчас большинство языков программирования поддерживают строки Юникода, хотя их представление может различаться в зависимости от реализации.

Методы ввода

Консоль GNU/Linux также допускает ввод символа Юникода по его коду - для этого десятичный код символа нужно ввести цифрами расширенного блока клавиатуры при зажатой клавише Alt. Можно вводить символы и по их шестнадцатеричному коду: для этого нужно зажать клавишу AltGr, и для ввода цифр A-F использовать клавиши расширенного блока клавиатуры от NumLock до Enter (по часовой стрелке). Поддерживается также и ввод в соответствии с ISO 14755. Для того чтобы перечисленные способы могли работать, нужно включить в консоли режим Юникода вызовом unicode_start (1) и выбрать подходящий шрифт вызовом setfont (8).

Написание «Юникод» уже твёрдо вошло в русскоязычные тексты. Согласно «Яндексу », частота использования этого слова примерно в 11 раз превышает «Уникод» . В Википедии используется более распространённый вариант.

На сайте Консорциума есть специальная страница, где рассматриваются проблемы передачи слова «Unicode» в различных языках и системах письма. Для русской кириллицы указан вариант «Юникод» .

Формы, принятые иностранными организациями для русской передачи слова «Unicode», являются рекомендательными.

См. также
  • Проект:Внесение символов алфавитов народов России в Юникод
Примечания
  • Unicode Transcriptions (англ.) . Архивировано из первоисточника 22 августа 2011. Проверено 10 мая 2010.
  • Уникод в словаре Paratype
  • The Unicode® Standard: A Technical Introduction . Архивировано
  • History of Unicode Release and Publication Dates . Архивировано из первоисточника 22 августа 2011. Проверено 4 июля 2010.
  • The Unicode Consortium . Архивировано из первоисточника 22 августа 2011. Проверено 4 июля 2010.
  • Foreword . Архивировано из первоисточника 22 августа 2011. Проверено 4 июля 2010.
  • General Structure . Архивировано из первоисточника 22 августа 2011. Проверено 5 июля 2010.
  • European Alphabetic Scripts . Архивировано из первоисточника 22 августа 2011. Проверено 4 июля 2010.
  • Unicode 88 . Архивировано из первоисточника 22 августа 2011. Проверено 8 июля 2010.
  • Unicode and Microsoft Windows NT (англ.) . Microsoft Support . Архивировано
  • Unicode используется почти на 50% веб-сайтов (рус.) . Архивировано из первоисточника 22 августа 2011.
  • Roadmap to the TIP (Tertiary Ideographic Plane)
  • http://www.cl.cam.ac.uk/~mgk25/ucs/utf-8-history.txt (англ.)
  • Регистр в Unicode - это непросто
  • В большинстве шрифтов для ПК реализованы «прописные» (маюскульные) моноширинные цифры.
  • В некоторых случаях документ (не простой текст) в Юникоде может занимать существенно меньше места, чем документ в однобайтовой кодировке. Например, если некая веб-страница содержит примерно поровну русского и греческого текста, то в однобайтовой кодировке придётся либо русские, либо греческие буквы записывать, используя возможности формата документов, в виде кодов с амперсандом, которые занимают 6-7 байт на символ (при использовании десятичных кодов), т. е. в среднем на букву придётся 3,5-4 байта, в то время как UTF-8 занимает только 2 байта на греческую или русскую букву.
  • Один из файлов шрифтов Arial Unicode имеет размер 24 мегабайта; существует Times New Roman размером 120 мегабайт, он содержит количество символов, близкое к 65536.
  • Даже для самого современного и дорогого мобильного телефона затруднительно выделить 120 Мбайт памяти для полного Юникод-шрифта. На практике использование полных шрифтов требуется редко.
  • 350 тыс. страниц «Юникод » против 31 тыс. страниц «Уникод ».
  • Ссылки
    • Официальный сайт Консорциума Юникода (англ.)
    • Unicode в каталоге ссылок Open Directory Project (dmoz). (англ.)
    • Что такое Unicode? (рус.)
    • Последняя версия

    Unicode : UTF-8 , UTF-16, UTF-32.

    Юникод представляет собой набор графических символов и способ их кодирования для компьютерной обработки текстовых данных.

    Юникод не только приписывает каждому символу уникальный код, но и определяет различные характеристики этого символа, например:

      тип символа (прописная буква, строчная буква, цифра, знак препинания и т. д.);

      атрибуты символа (отображение слева направо или справа налево, пробел, разрыв строки и т. д.);

      соответствующая прописная или строчная буква (для строчных и прописных букв соответственно);

      соответствующее числовое значение (для цифровых символов).

      Стандарты UTF (аббревиатура Unicode Transformation Format) для представления символов:

    UTF-16 : В Windows настройка, ускорение, частые вопросы Vista для представления всех Unicode- символов используется кодировка UTF-16. В UTF-16 символы представлены двумя байтами (16 битами). Эта кодировка используется в Windows, поскольку 16-битными значениями можно представить символы, составляющие алфавиты большинства языков мира, это позволяет программам быстрее обрабатывать строки и вычислять их длину. Однако для представления символов алфавита некоторых языков 16 бит недостаточно. Для таких случаев UTE-16 поддерживает «суррогатные» кодировки, позволяющие кодировать символы 32 битами (4 байтами). Впрочем, приложений, которым приходится иметь дело с символами таких языков, мало, поэтому UTF-16 - хороший компромисс между экономией памяти и простотой программирования. Заметьте, что в.NET Framework все символы кодируются с использованием UTF-16, поэтому применение UTF-16 в Windows- приложениях повышает производительность и снижает потребление памяти при передаче строк между «родным» и управляемым кодом.

    UTF-8 : В кодировке UTF-8 разные символы могут быть представлены 1,2,3 или 4 байтами. Символы с значениями меньше 0x0080 сжимаются до 1 байта, что очень удобно для символов, применяемых в США. Символы, которым соответствуют значения из диапазона 0x0080-0x07FF, преобразуются в 2-байтовые значения, что хорошо работает с алфавитами европейских и ближневосточных языков. Символы с бо́льшими значениями преобразуются в 3-байтовые значения, удобные при работе со среднеазиатскими языками. Наконец, «суррогатные» пары записываются в 4-байтовом формате. UTF-8- чрезвычайно популярная кодировка. Однако ее эффективность меньше по сравнению с UTF-16, если часто используются символы с значениями 0x0800 и выше.

    UTF-32 : В UTF-32 все символы представлены 4 байтами. Эта кодировка удобна для написания простых алгоритмов для перебора символов любого языка, не требующих обработки символов, представленных разным числом байтов. Например, при использовании UTF-32 можно забыть о «суррогатах», поскольку любой символ в этой кодировке представлен 4 байтами. Ясно, что с точки зрения использования памяти эффективность UTF-32 далека от идеала. Поэтому данную кодировку редко применяют для передачи строк по сети и сохранения их в файлы. Как правило, UTF-32 используется как внутренний формат представления данных в программе.

    UTF-8

    В ближайшее время все более важную роль будет играть особый формат Unicode (и ISO 10646) под названием UTF-8 . Эта «производная» кодировка пользуется для записи символов цепочками байтов различной длины (от одного до шести), которые с помощью несложного алгоритма преобразуются в Unicode- коды, причем более употребительным символам соответствуют более короткие цепочки. Главное достоинство этого формата - совместимость с ASCII не только по значениям кодов, но и по количеству бит на символ, так как для кодирования любого из первых 128 символов в UTF-8 достаточно одного байта (хотя, например, для букв кириллицы нужно уже по два байта).

    Формат UTF-8 был изобретён 2 сентября 1992 года Кеном Томпсоном и Робом Пайком и реализован в Plan 9. Сейчас стандарт UTF-8 официально закреплён в документах RFC 3629 и ISO /IEC 10646 Annex D.

    Для Web- дизайнера эта кодировка имеет особое значение, так как именно она объявлена «стандартной кодировкой документа» в HTML начиная с версии 4.

    Текст, состоящий только из символов с номером меньше 128, при записи в UTF-8 превращается в обычный текст ASCII . И наоборот, в тексте UTF-8 любой байт со значением меньше 128 изображает символ ASCII с тем же кодом. Остальные символы Юникода изображаются последовательностями длиной от 2 до 6 байтов (реально только до 4 байт, поскольку использование кодов больше 221 не планируется), в которых первый байт всегда имеет вид 11xxxxxx, а остальные - 10xxxxxx.

    Проще говоря, в формате UTF-8 символы латинского алфавита, знаки препинания и управляющие символы ASCII записываются кодами US- ASCII , a все остальные символы кодируются при помощи нескольких октетов со старшим битом 1. Это приводит к двум эффектам.

      Даже если программа не распознаёт Юникод, то латинские буквы, арабские цифры и знаки препинания будут отображаться правильно.

      В случае, если латинские буквы и простейшие знаки препинания (включая пробел) занимают существенный объём текста, UTF-8 даёт выигрыш по объёму по сравнению с UTF-16.

      На первый взгляд может показаться, что UTF-16 удобнее, так как в ней большинство символов кодируется ровно двумя байтами. Однако это сводится на нет необходимостью поддержки суррогатных пар, о которых часто забывают при использовании UTF-16, реализовывая лишь поддержку символов UCS-2.

    Excel для Office 365 Word для Office 365 Outlook для Office 365 PowerPoint для Office 365 Publisher для Office 365 Excel 2019 Word 2019 Outlook 2019 PowerPoint 2019 OneNote 2016 Publisher 2019 Visio профессиональный 2019 Visio стандартный 2019 Excel 2016 Word 2016 Outlook 2016 PowerPoint 2016 OneNote 2013 Publisher 2016 Visio 2013 Visio профессиональный 2016 Visio стандартный 2016 Excel 2013 Word 2013 Outlook 2013 PowerPoint 2013 Publisher 2013 Excel 2010 Word 2010 Outlook 2010 PowerPoint 2010 OneNote 2010 Publisher 2010 Visio 2010 Excel 2007 Word 2007 Outlook 2007 PowerPoint 2007 Publisher 2007 Access 2007 Visio 2007 OneNote 2007 Office 2010 Visio Стандартный 2007 Visio стандартный 2010 Меньше

    В этой статье Вставка символа ASCII или Юникода в документ

    Если вам нужно ввести только несколько специальных знаков или символов, можно использовать или сочетания клавиш. Список символов ASCII см. в следующих таблицах или статье Вставка букв национальных алфавитов с помощью сочетаний клавиш .

    Примечания:

    Вставка символов ASCII

    Чтобы вставить символ ASCII, нажмите и удерживайте клавишу ALT, вводя код символа. Например, чтобы вставить символ градуса (º), нажмите и удерживайте клавишу ALT, затем введите 0176 на цифровой клавиатуре.

    Для ввода чисел используйте цифровую клавиатуру , а не цифры на основной клавиатуре. Если на цифровой клавиатуре необходимо ввести цифры, убедитесь, что включен индикатор NUM LOCK.

    Вставка символов Юникода

    Чтобы вставить символ Юникода, введите код символа, затем последовательно нажмите клавиши ALT и X. Например, чтобы вставить символ доллара ($), введите 0024 и последовательно нажмите клавиши ALT и X. Все коды символов Юникода см. в .

    Важно: Некоторые программы Microsoft Office, например PowerPoint и InfoPath, не поддерживают преобразование кодов Юникода в символы. Если вам необходимо вставить символ Юникода в одной из таких программ, используйте .

    Примечания:

      Если после нажатия клавиш ALT+X отображается неправильный символ Юникода, выберите правильный код, а затем снова нажмите ALT+X.

      Кроме того, перед кодом следует ввести "U+". Например, если ввести "1U+B5" и нажать клавиши ALT+X, отобразится текст "1µ", а если ввести "1B5" и нажать клавиши ALT+X, отобразится символ "Ƶ".

    Использование таблицы символов

    Таблица символов - это программа, встроенная в Microsoft Windows, которая позволяет просматривать символы, доступные для выбранного шрифта.

    С помощью таблицы символов можно копировать отдельные символы или группу символов в буфер обмена и вставлять их в любую программу, поддерживающую отображение этих символов. Открытие таблицы символов

      В Windows 10 Введите слово "символ" в поле поиска на панели задач и выберите таблицу символов в результатах поиска.

      В Windows 8 Введите слово "символ" на начальном экране и выберите таблицу символов в результатах поиска.

      В Windows 7 нажмите кнопку Пуск , последовательно выберите Все программы , Стандартные , Служебные и щелкните Таблица символов .

    Символы группируются по шрифту. Щелкните список шрифтов, чтобы выбрать подходящий набор символов. Чтобы выбрать символ, щелкните его, затем нажмите кнопку Выбрать . Чтобы вставить символ, щелкните правой кнопкой мыши нужное место в документе и выберите Вставить .

    Коды часто используемых символов

    Полный список символов см. в на компьютере, таблице кодов символов ASCII или таблицах символов Юникода, упорядоченных по наборам .

    Глиф

    Глиф

    Денежные единицы

    Юридические символы

    Математические символы

    Дроби

    Знаки пунктуации и диалектные символы

    Символы форм

    Коды часто используемых диакритических знаков

    Полный список глифов и соответствующих кодов см. в .

    Глиф

    Глиф

    Непечатаемые управляющие знаки ASCII

    Знаки, используемые для управления некоторыми периферийными устройствами, например принтерами, в таблице ASCII имеют номера 0–31. Например, знаку перевода страницы/новой страницы соответствует номер 12. Этот знак указывает принтеру перейти к началу следующей страницы.

    Таблица непечатаемых управляющих знаков ASCII

    Десятичное число

    Знак

    Десятичное число

    Знак

    Освобождение канала данных

    Начало заголовка

    Первый код управления устройством

    Начало текста

    Второй код управления устройством

    Конец текста

    Третий код управления устройством

    Конец передачи

    Четвертый код управления устройством

    пятиконечная

    Отрицательное подтверждение

    Подтверждение

    Синхронный режим передачи

    Звуковой сигнал

    Конец блока передаваемых данных

    Горизонтальная табуляция

    Конец носителя

    Перевод строки/новая строка

    Символ замены

    Вертикальная табуляция

    превышать

    Перевод страницы/новая страница

    Двенадцат

    Разделитель файлов

    Возврат каретки

    Разделитель групп

    Сдвиг без сохранения разрядов

    Разделитель записей

    Сдвиг с сохранением разрядов

    пятнадцат

    Разделитель данных

    Каждый пользователь Интернета в попытках настроить ту или иную его функцию хотя бы однажды видел на дисплее написанное слово «Юникод». Что это такое, вы узнаете, прочитав эту статью.

    Определение

    Кодировка "Юникод" — стандарт кодирования символов. Он был предложен некоммерческой организацией Unicode Inc. в 1991 году. Стандарт разработан с целью объединения как можно большего числа разнотипных символов в одном документе. Страница, которая создана на его основе, может содержать в себе буквы и иероглифы из разных языков (от русского до корейского) и математические знаки. При этом все символы в данной кодировке отображаются без проблем.

    Причины создания

    Когда-то, задолго до появления единой системы "Юникод", кодировка выбиралась исходя из предпочтений автора документа. По этой причине нередко, чтобы прочитать один документ, нужно было использовать разные таблицы. Иногда это приходилось делать по несколько раз, что существенно усложняло жизнь обычному пользователю. Как уже было сказано, решение этой проблемы в 1991 году было предложено некоммерческой организацией Unicode Inc., предложившей новый тип кодирования символов. Он был призван объединить морально устаревшие и разнообразные стандарты. "Юникод" - кодировка, которая озволила добиться немыслимого на тот момент: создать инструмент, поддерживающий огромное количество символов. Результат превзошел многие ожидания - появились документы, одновременно содержащие как английский, так и русский текст, латынь и математические выражения.

    Но созданию единой кодировки предшествовала необходимость разрешения ряда проблем, которые возникли из-за огромного разнообразия стандартов, уже существовавших на тот момент. Самые распространённые из них:

    • эльфийские письмена, или «кракозябры»;
    • ограниченность набора символов;
    • проблема преобразования кодировок;
    • дублирование шрифтов.

    Небольшой исторический экскурс

    Представьте, что на дворе 80-е. Компьютерная техника еще не так распространена и имеет вид, отличный от сегодняшнего. В то время каждая ОС по-своему уникальна и доработана каждым энтузиастом под конкретные нужды. Необходимость обмена информацией превращается в дополнительную доработку всего на свете. Попытка прочитать документ, созданный под другой ОС, зачастую выводит на экран непонятный набор символов, и начинаются игры с кодировкой. Не всегда получается сделать это быстро, и порой необходимый документ удаётся открыть через полгода, а то и позже. Люди, которые часто обмениваются информацией, создают для себя таблицы преобразования. И вот работа над ними выявляет интересную деталь: создавать их нужно по двум направлениям: «из моей в твою» и обратно. Сделать банальную инверсию вычислений машина не может, для нее в правом столбце исходник, а в левом - результат, но никак не наоборот. Если появлялась необходимость использовать какие-либо специальные символы в документе, их необходимо было сначала добавить, а потом еще и объяснить партнеру, что ему нужно сделать, чтобы эти символы не превратились в «кракозябры». И не будем забывать, что под каждую кодировку приходилось разрабатывать или внедрять собственные шрифты, что приводило к созданию огромного количества дублей в ОС.

    Представьте еще, что на странице шрифтов вы увидите 10 штук идентичных Times New Roman с маленькими пометками: для UTF-8, UTF-16, ANSI, UCS-2. Теперь вы понимаете, что разработка универсального стандарта была настоятельной необходимостью?

    «Отцы-создатели»

    Истоки создания Unicode следует искать в 1987 году, когда Джо Беккер из Xerox вместе с Ли Коллинзом и Марком Дэвисом из компании Apple начали исследования в сфере практического создания универсального набора символов. В августе 1988 года Джо Беккер опубликовал проект предложения по созданию 16-битной международной многоязычной системы кодирования.

    Через несколько месяцев рабочая группа Unicode была расширена за счет включения Кена Уистлера и Майка Кернегана из RLG, Гленн Райт из Sun Microsystems и нескольких других специалистов, что позволило завершить работы по предварительному формированию единого стандарта кодирования.

    Общее описание

    В основе Unicode лежит понятие символа. Под этим определением понимается абстрактное явление, существующее в конкретном виде письменности и реализуемое через графемы (свои «портреты»). Каждый символ задается в "Юникоде" уникальным кодом, принадлежащим конкретному блоку стандарта. Например, графема B есть и в английском, и в русском алфавитах, но в Unicode ей соответствуют 2 разных символа. К ним применяется преобразование в т. е. каждый из них описывается ключом базы данных, набором свойств и полным названием.

    Преимущества Unicode

    От остальных современников кодировка "Юникод" отличалась огромным запасом знаков для «шифрования» символов. Дело в том, что его предшественники имели 8 бит, то есть поддерживали 28 символов, а вот новая разработка имела уже 216 символов, что стало гигантским шагом вперед. Это позволило закодировать практически все существующие и распространённые алфавиты.

    С появлением "Юникода" отпала надобность использовать таблицы преобразования: как единый стандарт он просто сводил на нет их необходимость. Точно так же канули в Лету и «кракозябры» - единый стандарт сделал их невозможными, равно как и исключил необходимость создания дублей шрифтов.

    Развитие Unicode

    Конечно, прогресс не стоит на месте, и с момента первой презентации минуло уже 25 лет. Однако кодировка "Юникод" упрямо удерживает свои позиции в мире. Во многом это стало возможным благодаря тому, что он стал легко внедряемым и получил распространение, будучи признанным разработчикам проприетарного (платного) и открытого ПО.

    При этом не стоит полагать, что сегодня нам доступна та же кодировка "Юникод", что и четверть века назад. На данный момент ее версия сменилась на 5.х.х, а количество кодируемых символов возросло до 231. От возможности использовать больший запас знаков отказались, чтобы всё еще сохранить поддержку для Unicode-16 (кодировки, где максимальное их количество ограничивалось цифрой 216). С момента своего появления и до версии 2.0.0 "Юникод-стандарт" увеличил количество символов, которые в него входили, практически в 2 раза. Рост возможностей продолжался и в последующие годы. К версии 4.0.0 уже появилась необходимость увеличить сам стандарт, что и было сделано. В результате "Юникод" обрел тот вид, в котором мы его знаем сегодня.

    Что еще есть в Unicode?

    Помимо огромного, постоянно пополняющегося количества символов, имеет еще одну полезную черту. Речь идет о так называемой нормализации. Вместо того чтобы пролистывать весь документ символ за символом и подставлять соответствующие значки из таблицы соответствия, используется один из существующих алгоритмов нормализации. О чем речь?

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

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

    Распространение стандарта

    За 25 лет своей истории кодировка "Юникод" получила, вероятно, наибольшее распространение в мире. Под этот стандарт подгоняются также программы и web-страницы. О широте применения может говорить тот факт, что Unicode сегодня используют более 60 % интернет-ресурсов.

    Теперь вам известно, когда появился стандарт "Юникод". Что это такое, вы также знаете и сможете оценить все значение изобретения, сделанного группой специалистов Unicode Inc. более 25 лет назад.