Просмотр отдельных изменений
Эта страница позволяет вам проверить переменные, сгенерированные фильтром злоупотреблений, на предмет отдельного изменения.
Переменные, созданные для этого изменения
Переменная | Значение |
---|---|
Число правок участника (user_editcount ) | null |
Имя учётной записи (user_name ) | '94.180.32.32' |
Группы (включая неявные) в которых состоит участник (user_groups ) | [
0 => '*'
] |
Редактирует ли участник через мобильный интерфейс (user_mobile ) | false |
ID страницы (page_id ) | 13025 |
Пространство имён страницы (page_namespace ) | 0 |
Название страницы (без пространства имён) (page_title ) | 'Юникод' |
Полное название страницы (page_prefixedtitle ) | 'Юникод' |
Последние десять редакторов страницы (page_recent_contributors ) | [
0 => '94.180.32.32',
1 => 'Gromolyak',
2 => 'Noname2013',
3 => '94.180.68.84',
4 => 'Vbif-routine',
5 => 'Rubinbot',
6 => '46.147.89.171',
7 => '62.176.8.222',
8 => 'Mercury',
9 => 'Vs64vs'
] |
Действие (action ) | 'edit' |
Описание правки/причина (summary ) | '/* Ссылки */ ' |
Была ли правка отмечена как «малое изменение» (больше не используется) (minor_edit ) | false |
Вики-текст старой страницы до правки (old_wikitext ) | '[[Файл:Unicode logo.svg|thumb|right|Логотип Unicode Consortium]]
'''Юнико́д'''<ref name=autogenerated1>{{cite web|url=http://www.unicode.org/standard/UnicodeTranscriptions.html|title=Unicode Transcriptions|publisher=|date=|accessdate=10 мая 2010|lang=en|archiveurl=http://www.webcitation.org/618OOcYRY|archivedate=2011-08-22}}</ref> (чаще всего) или '''Унико́д'''<ref>[http://www.paratype.ru/help/term/terms.asp?code=361 Уникод в словаре Paratype]</ref> ({{lang-en|Unicode}}) — стандарт [[Набор символов|кодирования символов]], позволяющий представить знаки почти всех письменных [[язык]]ов.<ref name='unicode-techintro'>{{cite web|url=http://www.unicode.org/standard/principles.html|title=The Unicode® Standard: A Technical Introduction|accessdate=2010-07-04|archiveurl=http://www.webcitation.org/618OPFD0i|archivedate=2011-08-22}}</ref>
Стандарт предложен в [[1991 год]]у некоммерческой организацией «Консорциум Юникода» ({{lang-en|Unicode Consortium, Unicode Inc.}}).<ref>{{cite web|url=http://www.unicode.org/history/publicationdates.html|title=History of Unicode Release and Publication Dates|accessdate=2010-07-04|archiveurl=http://www.webcitation.org/618OPfL5z|archivedate=2011-08-22}}</ref><ref>{{cite web|url=http://www.unicode.org/consortium/consort.html|title=The Unicode Consortium|accessdate=2010-07-04|archiveurl=http://www.webcitation.org/618OQ5Syr|archivedate=2011-08-22}}</ref> Применение этого стандарта позволяет закодировать очень большое число символов из разных письменностей: в документах Unicode могут соседствовать китайские [[иероглиф]]ы, математические символы, буквы [[греческий алфавит|греческого алфавита]], [[латинский алфавит|латиницы]] и [[кириллица|кириллицы]], при этом становится ненужным переключение [[кодовая страница|кодовых страниц]].<ref name='unicode-foreword'>{{cite web|url=http://www.unicode.org/versions/Unicode5.2.0/Foreword.pdf|title=Foreword|accessdate=2010-07-04|archiveurl=http://www.webcitation.org/618OQVqZN|archivedate=2011-08-22}}</ref>
Стандарт состоит из двух основных разделов: универсальный набор символов ({{lang-en|UCS, universal character set}}) и семейство кодировок ({{lang-en|UTF, Unicode transformation format}}). Универсальный набор символов задаёт однозначное соответствие символов [[код]]ам — элементам кодового пространства, представляющим неотрицательные целые числа. Семейство кодировок определяет машинное представление последовательности кодов UCS.
Коды в стандарте Юникод разделены на несколько областей. Область с кодами от U+0000 до U+007F содержит символы набора [[ASCII]] с соответствующими кодами. Далее расположены области знаков различных письменностей, знаки пунктуации и технические символы. Часть кодов зарезервирована для использования в будущем.<ref name='unicode-02'>{{cite web|url=http://www.unicode.org/versions/Unicode5.2.0/ch02.pdf|title=General Structure|accessdate=2010-07-05|archiveurl=http://www.webcitation.org/618OQvPSL|archivedate=2011-08-22}}</ref> Под символы кириллицы выделены области знаков с кодами от U+0400 до U+052F, от U+2DE0 до U+2DFF, от U+A640 до U+A69F (см. [[Кириллица в Юникоде]]).<ref>{{cite web|url=http://www.unicode.org/versions/Unicode5.2.0/ch07.pdf|title=European Alphabetic Scripts|accessdate=2010-07-04|archiveurl=http://www.webcitation.org/618ORPqRV|archivedate=2011-08-22}}</ref>
== Предпосылки создания и развитие Юникода ==
К концу [[1980-е|1980-х годов]] стандартом стали 8-битные символы, при этом существовало множество разных 8-битных кодировок, и постоянно появлялись всё новые. Это объяснялось как постоянным расширением круга поддерживаемых языков, так и стремлением создать кодировку, частично совместимую с какой-нибудь другой (характерный пример — появление [[альтернативная кодировка|альтернативной кодировки]] для русского языка, обусловленное эксплуатацией западных программ, созданных для кодировки [[CP437]]). В результате появилось несколько проблем:
# Проблема «[[кракозябры|кракозябр]]» (отображения документов в неправильной кодировке):<ref name='unicode-foreword' /> её можно было решить либо последовательным внедрением методов указания используемой кодировки, либо внедрением единой для всех кодировки.
# Проблема ограниченности набора символов:<ref name='unicode-foreword' /> её можно было решить либо переключением шрифтов внутри документа, либо внедрением «широкой» кодировки. Переключение шрифтов издавна практиковалось в [[текстовый процессор|текстовых процессорах]], причём часто использовались [[нестандартные шрифты|шрифты с нестандартной кодировкой]], т. н. «dingbat fonts» — в итоге при попытке перенести документ в другую систему все нестандартные символы превращались в кракозябры.
# Проблема преобразования одной кодировки в другую: её можно было решить либо составлением таблиц перекодировки для каждой пары кодировок, либо использованием промежуточного преобразования в третью кодировку, включающую все символы всех кодировок.<ref>{{cite web|url=http://www.unicode.org/history/unicode88.pdf|title=Unicode 88|accessdate=2010-07-08|archiveurl=http://www.webcitation.org/618ORt6df|archivedate=2011-08-22}}</ref>
# Проблема дублирования шрифтов: особенно для каждой кодировки делался свой шрифт, даже если эти кодировки частично (или полностью) совпадали по набору символов: эту проблему можно было решить, делая «большие» шрифты, из которых потом выбираются нужные для данной кодировки символы — однако это требует создания единого реестра символов, чтобы определять, чему что соответствует.
Было признано необходимым создание единой «широкой» кодировки. Кодировки с переменной длиной символа, широко использующиеся в Восточной Азии, были признаны слишком сложными в использовании, поэтому было решено использовать символы фиксированной ширины. Использование 32-битных символов казалось слишком расточительным, поэтому было решено использовать 16-битные.
Таким образом, первая версия Юникода представляла собой кодировку с фиксированным размером символа в 16 бит, то есть общее число кодов было 2<sup>16</sup> (65 536). Отсюда происходит практика обозначения символов четырьмя шестнадцатеричными цифрами (например, <code>U+04F0</code>). При этом в Юникоде планировалось кодировать не все существующие символы, а только те, которые необходимы в повседневном обиходе. Редко используемые символы должны были размещаться в «области пользовательских символов» ({{lang|en|private use area}}), которая первоначально занимала коды <code>U+D800…U+F8FF</code>. Чтобы использовать Юникод также и в качестве промежуточного звена при преобразовании разных кодировок друг в друга, в него включили все символы, представленные во всех наиболее известных кодировках.
В дальнейшем, однако, было принято решение кодировать все символы и в связи с этим значительно расширить кодовую область. Одновременно с этим, коды символов стали рассматриваться не как 16-битные значения, а как абстрактные числа, которые в компьютере могут представляться множеством разных способов (см. [[#Способы представления|Способы представления]]).
Поскольку в ряде компьютерных систем (например, [[Windows NT]]<ref name="windows-nt">{{cite web|url=http://support.microsoft.com/kb/99884|title=Unicode and Microsoft Windows NT|work=Microsoft Support|lang=en|archiveurl=http://www.webcitation.org/618OSVei1|archivedate=2011-08-22}}</ref>) фиксированные 16-битные символы уже использовались в качестве кодировки по умолчанию, было решено все наиболее важные знаки кодировать только в пределах первых 65 536 позиций (так называемая {{lang-en|basic multilingual plane, BMP}}). Остальное пространство используется для «дополнительных символов» ({{lang-en|supplementary characters}}): систем письма вымерших языков или очень редко используемых [[китай]]ских иероглифов, математических и музыкальных символов.
Для совместимости со старыми 16-битными системами была изобретена система [[UTF-16]], где первые 65 536 позиций, за исключением позиций из интервала U+D800…U+DFFF, отображаются непосредственно как 16-битные числа, а остальные представляются в виде «суррогатных пар» (первый элемент пары из области U+D800…U+DBFF, второй элемент пары из области U+DC00…U+DFFF). Для суррогатных пар была использована часть кодового пространства (2048 позиций), отведённого «для частного использования».
Поскольку в UTF-16 можно отобразить только 2<sup>20</sup>+2<sup>16</sup>−2048 ({{formatnum:1112064}}) символов, то это число и было выбрано в качестве окончательной величины кодового пространства Юникода (диапазон кодов: 0x000000-0x10FFFF)
Хотя кодовая область Юникода была расширена за пределы 2<sup>16</sup> уже в версии 2.0, первые символы в «верхней» области были размещены только в версии 3.1.
Роль этой кодировки в веб-секторе постоянно растёт, на начало 2010 доля веб-сайтов, использующих Юникод, составила около 50 %.<ref>{{cite web|url=http://w3pro.ru/news/unicode-ispolzuetsya-pochti-na-50-veb-saitov|title=Unicode используется почти на 50% веб-сайтов|lang=ru|archiveurl=http://www.webcitation.org/618OTTP1T|archivedate=2011-08-22}}</ref>
== Версии Юникода ==
Работа по доработке стандарта продолжается. Новые версии выпускаются по мере изменения и пополнения таблиц символов. Параллельно выпускаются новые документы [[ISO]]/IEC 10646.
Первый стандарт выпущен в 1991 году, последний — в 2014, следующий ожидается летом 2015 года<ref>{{cite web | url=http://std.dkuug.dk/JTC1/SC2/WG2/docs/n4566.pdf | title=Unicode Liaison Report to WG2 | author=Unicode Consortium | publisher=ISO/IEC JTC1/SC2/WG2 | date=24 February 2014 | accessdate= 2014-06-15}}</ref>. Стандарты версий 1.0 — 5.0 публиковались, как книги, и имеют [[ISBN]].
Номер версии стандарта составлен из трёх цифр (например, "4.0.1"). Третью цифру меняют при внесении в стандарт небольших изменений, не добавляющих новых символов.
{| class="wikitable"
|-
|+ Версии Юникода
|-
! Номер версии
! Дата публикации
! [[ISBN]] книги
! Издание ISO/IEC 10646
! Количество [[Письменность|письменностей]]
! Количество символов<ref group="A">'''Включая''' символы графические ({{lang-en|graphic}}), управляющие ({{lang-en|control}}) и символы форматирования ({{lang-en|format}}); '''не включая''' символы private-use, noncharacters и сурогаты ({{lang-en|surrogate code points}}).</ref>
! Изменения
|-
| 1.0.0
| Октябрь 1991
| ISBN 0-201-56788-1 (Vol.1)
|
| {{formatnum:24}}
| {{formatnum:7161}}
| Изначально таблицы Юникода содержали символы следующих письменностей: [[Арабское письмо|арабское письмо]], [[Армянское письмо|армянское письмо]], [[Бенгальский язык|бенгальское письмо]], [[Чжуинь|чжуиньское письмо]], [[Кириллица|кириллица]], [[Деванагари|деванагари]], [[Грузинское письмо|грузинское письмо]], [[Греческий алфавит|греческое и коптское письмо]], [[Гуджарати (письмо)|гуджарати]], [[Гурмукхи|гурмукхи]], [[Хангыль|хангыль]], [[Еврейский алфавит|еврейское письмо]], [[Хирагана|хирагана]], [[Каннада (письмо)|каннада]], [[Катакана|Катакана]], [[Лаосское письмо|лаосское письмо]], [[Латинский алфавит|латинское письмо]], [[Малаялам (письмо)|малаялам]], [[Ория (письмо)|ория]], [[Тамильское письмо|тамильское письмо]], [[Телугу (письмо)|телугу]], [[Тайское письмо|тайское письмо]] и [[Тибетское письмо|тибетское письмо]]<ref>{{cite web| title = Unicode Data 1.0.0|url= http://www.unicode.org/Public/reconstructed/1.0.0/UnicodeData.txt| accessdate = 2010-03-16}}</ref>
|-
| 1.0.1
| Июнь 1992
| ISBN 0-201-60845-6 (Vol.2)
|
| {{formatnum:25}}
| {{formatnum:28359}}
| Добавлено {{formatnum:20902}} [[:en:CJK Unified Ideographs|идеограммы китайского, японского и корейского письма]]<ref>
{{cite web
| title = Unicode Data 1.0.1
| url = http://www.unicode.org/Public/reconstructed/1.0.1/UnicodeData.txt
| accessdate = 2010-03-16}}</ref>
|-
| 1.1
| Июнь 1993
|
| ISO/IEC 10646-1:1993
| {{formatnum:24}}
| {{formatnum:34233}}
| Добавлено более {{formatnum:4306}} слогов [[Хангыль|хангыля]], дополнивших уже имеющиеся в таблицах {{formatnum:2350}} символов. Удалены символы [[Тибетское письмо|тибетского письма]]<ref>{{cite web
| title = Unicode Data 1995
| url = http://www.unicode.org/Public/1.1-Update/UnicodeData-1.1.5.txt
| accessdate = 2010-03-16 }}
</ref>
|-
| 2.0
| Июль 1996
| ISBN 0-201-48345-9
| ISO/IEC 10646-1:1993 и Amendments 5, 6, 7
| {{formatnum:25}}
| {{formatnum:38950}}
| Удалены добавленные ранее слоги [[Хангыль|хангыля]], и добавлены {{formatnum:11172}} новых слога хангыля с новыми кодами. Возвращены удалённые ранее символы [[Тибетское письмо|тибетского письма]]; символы получили новые коды и были размещены в разных таблицах. Введён механизм сурогатных ({{lang-en|surrogate}}) символов. Выделено место для плоскостей ({{lang-en|planes}}) 15 и 16<ref>{{cite web
| title = Unicode Data 2.0.14
| url = http://www.unicode.org/Public/2.0-Update/UnicodeData-2.0.14.txt
| accessdate = 2010-03-16}}
</ref>
|-
| 2.1
| Май 1998
|
| ISO/IEC 10646-1:1993, Amendments 5, 6, 7, два символа из Amendment 18
| 25
| {{formatnum:38952}}
| Добавлен [[символ евро]]<ref>{{cite web
| title = Unicode Data 2.1.2
| url = http://www.unicode.org/Public/2.1-Update/UnicodeData-2.1.2.txt
| accessdate = 2010-03-16}}
</ref>
|-
| 3.0
| Сентябрь 1999
| ISBN 0-201-61633-5
| ISO/IEC 10646-1:2000
| {{formatnum:38}}
| {{formatnum:49259}}
| Добавлены символы следующих письменностей: [[Письмо чероки|письмо чероки]], [[Эфиопское письмо|эфиопское письмо]], [[Кхмерское письмо|кхмерское письмо]], [[Монгольские письменности|монгольские письменности]], [[Бирманское письмо|бирманское письмо]], [[Огамическое письмо|огамическое письмо]], [[Руны|руны]], [[Сингальское письмо|сингальское письмо]], [[Сирийское письмо|сирийское письмо]], [[Тана (письмо)|тана]], [[Канадское слоговое письмо|канадское слоговое письмо]] и [[Письмо и|письмо и]], а также символы [[Шрифт Брайля|шрифта Брайля]]<ref>{{cite web
| title = Unicode Data 3.0.0
| url = http://www.unicode.org/Public/3.0-Update/UnicodeData-3.0.0.txt
| accessdate = 2010-03-16}}
</ref>
|-
| 3.1
| Март 2001
|
| ISO/IEC 10646-1:2000
ISO/IEC 10646-2:2001
| {{formatnum:41}}
| {{formatnum:94205}}
| Добавлены символы следующих письменностей: [[Дезеретский алфавит|дезеретское письмо]], [[Готское письмо|готское письмо]] и [[:en:Old Italic alphabet|старое итальянское письмо]], а также символы [[Современная музыкальная нотация|западной]] и [[Византийская музыка|византийской]] музыки, {{formatnum:42711}} [[:en:CJK Unified Ideographs|идеограмм китайского, японского и корейского письма]]<ref>{{cite web
| title =Unicode Data 3.1.0
| url =http://www.unicode.org/Public/3.1-Update/UnicodeData-3.1.0.txt
| accessdate = 2010-03-16 }}
</ref>
|-
| 3.2
| Март 2002
|
| ISO/IEC 10646-1:2000 и Amendment 1
ISO/IEC 10646-2:2001
| {{formatnum:45}}
| {{formatnum:95221}}
| Добавлены символы следующих писбменностей: [[:en:Buhid script|письмо buhid]], [[:en:Hanunó'o script|письмо hanunó'o]], [[Байбайин|байбайин]] и [[Тагбанва (письмо)|письмо тагбанва]]<ref>{{cite web
| title = Unicode Data 3.2.0
| url = http://www.unicode.org/Public/3.2-Update/UnicodeData-3.2.0.txt
| accessdate = 2010-03-16}}
</ref>
|-
| 4.0
| Апрель 2003
| ISBN 0-321-18578-1
| ISO/IEC 10646:2003
| {{formatnum:52}}
| {{formatnum:96447}}
| Добавлены символы следующих письменностей: [[Кипрское письмо|кипрское письмо]], [[:en:Limbu script|письмо лимбу]], [[Линейное письмо Б|линейное письмо Б]], [[Сомалийское письмо|сомалийское письмо]], [[:en:Shavian alphabet|письмо shavian]], [[:en:Tai Nüa language#Writing system|письмо tai le]] и [[Угаритское письмо|угаритское письмо]], а также символы [[Гексаграмма (Ицзин)|гексаграмм]]<ref>{{cite web
| title = Unicode Data 4.0.0
| url = http://www.unicode.org/Public/4.0-Update/UnicodeData-4.0.0.txt
| accessdate = 2010-03-16}}
</ref>
|-
| 4.1
| Март 2005
|
| ISO/IEC 10646:2003 и Amendment 1
| {{formatnum:59}}
| {{formatnum:97720}}
| Добавлены символы следующих письменностей: [[Лонтара|письмо лонтара]], [[Глаголица|глаголица]], [[Кхароштхи|письмо кхароштхи]], [[:en:New Tai Lue alphabet|новое письмо tai lue]], [[Древнеперсидская клинопись|древнеперсидская клинопись]], [[Силхетское нагари|силхетское нагари]] и [[Древнеливийское письмо|древнеливийское письмо]]. Символы [[Коптское письмо|коптского письма]] были отделены от символов [[Греческий алфавит|греческого письма]]. Также добавлены [[Аттическая система счисления|символы старых греческих цифр]] и [[:en:Musical notation#Ancient Greece|музыкальные символы]]<ref>{{cite web
| title = Unicode Data
| url = http://www.unicode.org/Public/4.1.0/ucd/UnicodeData.txt
| accessdate = 2010-03-16}}
</ref>
|-
| 5.0
| Июль 2006
| ISBN 0-321-48091-0
| ISO/IEC 10646:2003, Amendments 1, 2, четыре символа из Amendment 3
| {{formatnum:64}}
| {{formatnum:99089}}
| Добавлены символы следующих письменностей: [[Балийское письмо|балийское письмо]], [[Клинопись|клинопись]], [[Нко (письмо)|письмо нко]], [[Монгольское квадратное письмо|монгольское квадратное письмо]] и [[Финикийское письмо|финикийское письмо]]<ref>{{cite web
| title = Unicode Data 5.0.0
| url = http://www.unicode.org/Public/5.0.0/ucd/UnicodeData.txt
| accessdate = 2010-03-17}}
</ref>
|-
| 5.1
| Апрель 2008
|
| ISO/IEC 10646:2003 и Amendments 1, 2, 3, 4
| {{formatnum:75}}
| {{formatnum:100713}}
| Добавлены символы следующих письменностей: [[Карийское письмо|карийское письмо]], [[Чамская письменность|чамская письменность]], [[:en:Kayah Li script|письмо kayah li]], [[Лепча (письмо)|письмо лепча]], [[Ликийский алфавит|ликийское письмо]], [[Лидийский алфавит|лидийское письмо]], [[Ол-чики|письмо ол-чики]], [[Реджангское письмо|реджангское письмо]], [[Саураштра (письмо)|письмо саураштра]], [[Сунданское письмо|сунданское письмо]] и [[Ваи (письмо)|письмо ваи]]. Добавлены [[Фестский_диск|символы с фестского диска]], символы для фишек игр [[Маджонг|маджонг]] и [[Домино|домино]], [[Заглавная буква эсцет|заглавная буква эсцет (ß)]], а также символы — [[:en:Scribal abbreviation|аббревиатур scribal]], используемых в средневековых [[Рукопись|рукописях]]. Новыми символами дополнен набор символов [[Бирманское письмо|бирманского письма]]<ref>{{cite web
| title = Unicode Data 5.1.0
| url = http://www.unicode.org/Public/5.1.0/ucd/UnicodeData.txt
| accessdate = 2010-03-17 }}
</ref>
|-
| 5.2
| Октябрь 2009
|
| ISO/IEC 10646:2003 и Amendments 1, 2, 3, 4, 5, 6
| {{formatnum:90}}
| {{formatnum:107361}}
| Добавлены символы следующих письменностей: [[Авестийский алфавит|авестийское письмо]], [[Бамум (письменность)|письмо бамум]], [[Египетское иероглифическое письмо|египетское иероглифическое письмо]] (по [[:en:Gardiner's sign list|списку Гардинера]], содержащему {{formatnum:1071}} символ), [[:en:Imperial Aramaic|письмо imperial aramaic]], [[:en:Inscriptional Pahlavi|письмо inscriptional pahlavi]], [[:en:Inscriptional Parthian|письмо inscriptional parthian]], [[Яванское письмо|яванское письмо]], [[Кайтхи|письмо кайтхи]], [[Алфавит Фрейзера|письмо лису]], [[Манипури (письмо)|письмо манипури]], [[Южноаравийское письмо|южноаравийское письмо]], [[Древнетюркское руническое письмо|древнетюркское руническое письмо]], [[Самаритянское письмо|самаритянское письмо]], [[:en:Tai Tham script|письмо tai tham]] и [[:en:Tai Viet script|письмо tai viet]]. Добавлены {{formatnum:4149}} новых [[:en:CJK Unified Ideographs|идеиграмм китайского, японского и корейского письма]] (CJK-C), символы [[Ведийский язык|ведийского письма]], а также расширен набор символов Jamo [[Хангыль|старого хангыля]]<ref>{{cite web
| title = Unicode Data 5.2.0
| url = http://www.unicode.org/Public/5.2.0/ucd/UnicodeData.txt
| accessdate = 2010-03-17}}
</ref>
|-
| 6.0
| Октябрь 2010
|
| ISO/IEC 10646:2010 и [[Символ рупии|символ валюты Индии]]
| {{formatnum:93}}
| {{formatnum:109449}}
| Добавлены символы следующих письменностей: [[Батакское письмо|батакское письмо]], [[Брахми|письмо брахми]], [[:en:Mandaic alphabet|письмо mandaic]]. Добавлены символы [[Игральные карты|игральных карт]], [[Дорожный знак|дорожных знаков]], [[Географическая карта|географических карт]], [[Алхимические символы|алхимии]], [[Эмотикон|emoticon]] и [[Эмодзи|emoji]]. Добавлены {{formatnum:222}} [[:en:CJK Unified Ideographs|идеограммы китайского, японского и корейского письма]] (CJK-D)<ref>{{cite web
| title = Unicode Data 6.0.0
| url = http://www.unicode.org/Public/6.0.0/ucd/UnicodeData.txt
| accessdate = 2010-10-11}}
</ref>
|-
| 6.1
| Январь 2012
|
| ISO/IEC 10646:2012
| {{formatnum:100}}
| {{formatnum:110181}}
| Добавлены символы следующих письменностей: [[:en:Chakma alphabet|письмо chakma]], [[Мероитское письмо|мероитский рукописный шрифт и мероитские иероглифы]], [[Письмо Полларда|письмо мяо]], [[Шарада (письмо)|письмо шарада]], [[:en:Sora Sompeng|письмо sora sompeng]] и [[Такри|письмо такри]]<ref>{{cite web
| title = Unicode Data 6.1.0
| url = http://www.unicode.org/Public/6.1.0/ucd/UnicodeData.txt
| accessdate = 2012-01-31}}
</ref>
|-
| 6.2
| Сентябрь 2012
|
| ISO/IEC 10646:2012 и [[:en:Turkish lira sign|символ турецкой валюты]]
| {{formatnum:100}}
| {{formatnum:110182}}
| Добавлен [[:en:Turkish lira sign|символ турецкой валюты]]<ref>{{cite web
| title = Unicode Data 6.2.0
| url = http://www.unicode.org/Public/6.2.0/ucd/UnicodeData.txt
| accessdate = 2012-09-26}}
</ref>
|-
| 6.3
| Сентябрь 2013
|
| ISO/IEC 10646:2012 и шесть символов
| {{formatnum:100}}
| {{formatnum:110187}}
| Добавлено пять символов для форматирования двунаправленного текста<ref>{{cite web
| title = Unicode Data 6.3.0
| url = http://www.unicode.org/Public/6.3.0/ucd/UnicodeData.txt
| accessdate = 2013-09-30}}
</ref>
|-
| 7.0
| Июнь 2014
|
| ISO/IEC 10646:2012, Amendments 1, 2 и [[Символ рубля|символ рубля]]
| {{formatnum:123}}
| {{formatnum:113021}}
| Добавлены символы следующих письменностей: [[Басса (письмо)|письмо басса]], [[Агванское письмо|агванское письмо]], [[:en:Duployan shorthand|письмо duployan]], [[Эльбасанское письмо|эльбасанское письмо]], [[Грантха|письмо грантха]], [[:en:Khojki|письмо khojki]], [[:en:Khudabadi alphabet|письменность khudawadi]], [[Линейное письмо А|линейное письмо А]], [[:en:Mahajani|письмо mahajani]], [[:en:Manichaean alphabet|письмо manichaean]], [[Кикакуи|письмо кикакуи]], [[Моди (письмо)|письмо моди]], [[:en:Mro script|письмо mro]], [[Набатейское письмо|набатейское письмо]], [[Северноаравийские языки|северноаравийское письмо]], [[Древнепермское письмо|древнепермское письмо]], [[:en:Pahawh Hmong|письмо pahawh hmong]], [[:en:Palmyrene script|письмо palmyrene]], [[:en:Pau Cin Hau|письмо pau cin hau]], [[:en:Psalter Pahlavi|письмо psalter pahlavi]], [[Сиддхаматрика|сиддхаматрика]], [[:en:Tirhuta|письмо tirhuta]], [[Варанг-кшити|варанг-кшити]] и [[:en:Dingbat|орнамент dingbat]]<ref>{{cite web
| title = Unicode Data 7.0.0
| url = http://www.unicode.org/Public/7.0.0/ucd/UnicodeData.txt
| accessdate = 2014-06-15}}
</ref>
|-
|colspan="7" | '''Примечания'''
<references group="A" />
|-
|}
== Кодовое пространство ==
Хотя формы записи UTF-8 и UTF-32 позволяют кодировать до 2<sup>31</sup> ({{formatnum:2147483648}}) кодовых позиций, было принято решение использовать лишь {{formatnum:1112064}} для совместимости с UTF-16. Впрочем, даже и этого на текущий момент более чем достаточно — в версии 6.0 используется чуть менее {{formatnum:110000}} кодовых позиций ({{formatnum:109242}} графических и 273 прочих символов).
Кодовое пространство разбито на 17 ''плоскостей'' ({{lang-en|planes}}) по 2<sup>16</sup> ({{formatnum:65536}}) символов. Нулевая плоскость ({{lang-en|plane 0}}) называется ''базовой'' ({{lang-en|basic}}) и содержит символы наиболее употребительных письменностей. Остальные плоскости — дополнительные ({{lang-en|supplementary}}). Первая плоскость ({{lang-en|plane 1}}) используется, в основном, для исторических письменностей, вторая ({{lang-en|plane 2}}) — для редко используемых иероглифов [[CJK|китайского письма (ККЯ)]], третья ({{lang-en|plane 3}}) зарезервирована для архаичных китайских иероглифов<ref>[http://unicode.org/roadmaps/tip/ Roadmap to the TIP (Tertiary Ideographic Plane)]</ref>. Плоскости 15 и 16 выделены для частного употребления.<ref name='unicode-02' />
Для обозначения символов Unicode используется запись вида «U+''xxxx''» (для кодов 0…FFFF), или «U+''xxxxx''» (для кодов 10000…FFFFF), или «U+''xxxxxx''» (для кодов 100000…10FFFF), где ''xxx'' — [[шестнадцатеричная система счисления|шестнадцатеричные]] цифры. Например, символ «я» (U+044F) имеет код 044F<sub>[[шестнадцатеричная система счисления|16]]</sub> = 1103<sub>[[десятичная система счисления|10]]</sub>.
{| class="wikitable sortable"
|-
! Плоскость !! Название !! Диапазон символов
|-
| Plane 0 || Basic multilingual plane (BMP) || U+0000…U+FFFF
|-
| Plane 1 || Supplementary multilingual plane (SMP) || U+10000…U+1FFFF
|-
| Plane 2 || Supplementary ideographic plane (SIP) || U+20000…U+2FFFF
|-
| Planes 3-13 || Unassigned || U+30000…U+DFFFF
|-
| Plane 14 || Supplementary special-purpose plane (SSP) || U+E0000…U+EFFFF
|-
| Planes 15-16 || Supplementary private use area (S PUA A/B) || U+F0000…U+10FFFF
|-
|}
== Система кодирования ==
Универсальная система кодирования (Юникод) представляет собой набор графических символов и способ их кодирования для [[компьютер]]ной обработки текстовых данных.
Графические символы — это символы, имеющие видимое изображение. Графическим символам противопоставляются управляющие символы и символы форматирования.
Графические символы включают в себя следующие группы:
* буквы, содержащиеся хотя бы в одном из обслуживаемых [[алфавит]]ов;
* цифры;
* знаки пунктуации;
* специальные знаки ([[математика|математические]], технические, [[идеограмма|идеограммы]] и пр.);
* разделители.
Юникод — это система для линейного представления текста. Символы, имеющие дополнительные над- или подстрочные элементы, могут быть представлены в виде построенной по определённым правилам последовательности кодов (составной вариант, composite character) или в виде единого символа (монолитный вариант, precomposed character). На данный момент (2014) считается, что все буквы крупных письменностей в Юникод внесены, и если символ доступен в составном варианте, дублировать его в монолитном виде не нужно.
=== Политика консорциума ===
Консорциум не создаёт нового, а констатирует сложившийся порядок вещей.{{-1|<ref name="emoji">[http://www.unicode.org/faq/emoji_dingbats.html FAQ - Emoji & Dingbats<!-- Заголовок добавлен ботом -->]</ref>}} Например, картинки «[[эмодзи]]» были добавлены потому, что японские операторы мобильной связи широко их использовали. Для этого добавление символа проходит через сложный процесс.{{-1|<ref name="emoji" />}} И, например, [[символ рубля]] прошёл его за три месяца просто потому, что до этого шесть лет широко использовался.
[[товарный знак|Товарные знаки]] кодируют только в порядке исключения. Так, в Юникоде нет флага [[Windows]] или яблока [[Apple]].
Как только символ появился в кодировке, он никогда не сдвинется и не исчезнет. Если же потребуется изменить порядок символов, это делается не переменой позиций, а национальным порядком сортировки. Есть и другие, более тонкие гарантии стабильности — например, не будут меняться таблицы нормализации.{{-1|<ref>[http://www.unicode.org/policies/stability_policy.html Unicode Character Encoding Stability Policy<!-- Заголовок добавлен ботом -->]</ref>}}
=== Объединение и дублирование символов ===
Один и тот же символ может иметь несколько форм; в Юникод эти формы входят одной кодовой позицией:
* если это сложилось исторически. Например, у [[арабское письмо|арабских букв]] есть четыре формы: обособленная, в начале, в середине и в конце;<ref>Впоследствии конкретным формам арабских букв отвели отдельные позиции. Но всё равно рекомендуется писать по-арабски «общими» вариантами букв.</ref>
* либо если в одном языке принята одна форма, а в другом — другая. [[Болгарская кириллица (типографика)|Болгарская кириллица]] отличается от русской, а китайские иероглифы — от японских.
С другой стороны, если исторически в шрифтах были две разных кодовых позиции, они остаются разными и в Юникоде. Строчная греческая [[сигма (буква)|сигма]] имеет две формы, и они — разные позиции. [[Å (латиница)|А с кружком]] и знак [[ангстрем]]а, греческое [[мю]] и латинское «[[микро-]]» — разные символы.
Конечно же, похожие символы в неродственных письменностях ставятся в разные кодовые позиции. Например, буква «А» в [[латиница|латинице]], [[кириллица|кириллице]], [[греческий алфавит|греческом]] и [[письмо чероки|чероки]] — разные символы.
Крайне редко один и тот же символ ставится в две разные кодовые позиции для упрощения обработки текста. [[Штрих (математика)|Математический штрих]] и такой же штрих для индикации [[мягкий звук|мягкости звуков]] — разные символы, второй считается буквой.
== Модифицирующие символы ==
[[Файл:Diacritic-j.png|right|thumb|Представление символа «Й» (U+0419) в виде базового символа «И» (U+0418) и модифицирующего символа « ̆» (U+0306)]]
Графические символы в Юникоде подразделяются на протяжённые и непротяжённые (бесширинные). Непротяжённые символы при отображении не занимают места в [[строка|строке]]. К ним относятся, в частности, знаки ударения и прочие [[диакритические знаки]]. Как протяжённые, так и непротяжённые символы имеют собственные коды. Протяжённые символы иначе называются базовыми ({{lang-en|base characters}}), а непротяжённые — модифицирующими ({{lang-en|combining characters}}); причём последние не могут встречаться самостоятельно. Например, символ «á» может быть представлен как последовательность базового символа «a» (U+0061) и модифицирующего символа « ́» (U+0301) или как монолитный символ «á» (U+00C1).
Особый тип модифицирующих символов — селекторы варианта начертания ({{lang-en|variation selectors}}). Они действуют только на те символы, для которых такие варианты определены. В версии 5.0 варианты начертания определены для ряда математических символов, для символов традиционного [[монгольский алфавит|монгольского алфавита]] и для символов [[Монгольское квадратное письмо|монгольского квадратного письма]].
== Алгоритмы нормализации ==
Поскольку одни и те же символы можно представить различными кодами сравнение строк байт за байтом становится невозможным. Алгоритмы нормализации ({{lang-en|normalization forms}}) решают эту проблему, выполняя приведение текста к определённому стандартному виду. Приведение осуществляется путём замены символов на эквивалентные с использованием таблиц и правил. «Декомпозицией» называется замена (разложение) одного символа на несколько составляющих символов, а «композицией», наоборот, — замена (соединение) нескольких составляющих символов на один символ.
В стандарте Юникода определены 4 алгоритма нормализации текста: NFD, NFC, NFKD и NFKC.
=== NFD ===
NFD, {{lang-en|'''n'''ormalization '''f'''orm '''D'''}} («D» от {{lang-en|'''d'''ecomposition}}), форма нормализации D — каноническая декомпозиция — алгоритм, согласно которому выполняется рекурсивная замена монолитных символов ({{lang-en|precomposed characters}}) на несколько составных ({{lang-en|composite characters}}) в соответствии с таблицами декомпозиции.
Примеры:
{| style="text-align:center"
|
{| class="wikitable" style="text-align:center"
| <big>Å</big>
|-
| <small>U+00C5</small>
|}
| colspan="2" | →
|
{| class="wikitable"
| <big>A</big>
|-
| <small>U+0041</small>
|}
|
{| class="wikitable"
| <big> ̊</big>
|-
| <small>U+030A</small>
|}
|}
{| style="text-align:center"
|
{| class="wikitable" style="text-align:center"
| <big>ṩ</big>
|-
| <small>U+1E69</small>
|}
| colspan="2" | →
|
{| class="wikitable"
| <big>s</big>
|-
| <small>U+0073</small>
|}
|
{| class="wikitable"
| <big> ̣</big>
|-
| <small>U+0323</small>
|}
|
{| class="wikitable"
| <big> ̇</big>
|-
| <small>U+0307</small>
|}
|}
{| style="text-align:center"
|
{| class="wikitable" style="text-align:center"
| colspan="2" | <big>ḍ̇</big>
|-
| <small>U+1E0B</small> || <small>U+0323</small>
|}
| colspan="2" | →
|
{| class="wikitable"
| <big>d</big>
|-
| <small>U+0064</small>
|}
|
{| class="wikitable"
| <big> ̣</big>
|-
| <small>U+0323</small>
|}
|
{| class="wikitable"
| <big> ̇</big>
|-
| <small>U+0307</small>
|}
|}
{| style="text-align:center"
|
{| class="wikitable" style="text-align:center"
| colspan="3" | <big>q̣̇</big>
|-
| <small>U+0071</small> || <small>U+0307</small> || <small>U+0323</small>
|}
| colspan="2" | →
|
{| class="wikitable"
| <big>q</big>
|-
| <small>U+0071</small>
|}
|
{| class="wikitable"
| <big> ̣</big>
|-
| <small>U+0323</small>
|}
|
{| class="wikitable"
| <big> ̇</big>
|-
| <small>U+0307</small>
|}
|}
=== NFC ===
NFC, {{lang-en|'''n'''ormalization '''f'''orm '''C'''}} («C» от {{lang-en|'''c'''omposition}}), форма нормализации C — алгоритм, согласно которому последовательно выполняются каноническая декомпозиция и каноническая композиция.
Сначала каноническая декомпозиция (алгоритм NFD) приводит текст к форме D. Затем каноническая композиция — операция, обратная NFD, обрабатывает текст от начала к концу с учётом следующих правил:
* символ <tt>S</tt> считается ''начальным'', если имеет класс модификации равный нулю <!-- combining class of zero --> согласно таблице символов Юникода;
* в любой последовательности символов, начинающейся с символа <tt>S</tt>, символ <tt>C</tt> блокируется от <tt>S</tt>, только если между <tt>S</tt> и <tt>C</tt> есть какой-либо символ <tt>B</tt>, который либо является начальным, либо имеет одинаковый или больший класс модификации, чем <tt>C</tt>. Это правило распространяется только на строки, прошедшие каноническую декомпозицию;
* символ считается ''первичным'' композитом, если имеет каноническую декомпозицию в таблице символов Юникода (или каноническую декомпозицию для [[Хангыль|хангыля]] и он не входит в [http://www.unicode.org/unicode/reports/tr15/#Primary_Exclusion_List_Table список исключений]);
* символ <tt>X</tt> может быть первично совмещён с символом <tt>Y</tt>, если и только если существует первичный композит <tt>Z</tt>, канонически эквивалентный последовательности <<tt>X</tt>, <tt>Y</tt>>;
* если очередной символ <tt>C</tt> не блокируется последним встреченным начальным базовым символом <tt>L</tt> и он может быть успешно первично совмещён с ним, то <tt>L</tt> заменяется на композит <tt>L-C</tt>, а <tt>C</tt> удаляется.
Пример:
{| style="text-align:center"
|
{| class="wikitable" style="text-align:center"
| <big>o</big>
|-
| <small>U+006F</small>
|}
|
{| class="wikitable" style="text-align:center"
| <big> ̂</big>
|-
| <small>U+0302</small>
|}
| colspan="2" | →
|
{| class="wikitable"
| <big>ô</big>
|-
| <small>U+00F4</small>
|}
|}
=== NFKD ===
NFKD, {{lang-en|'''n'''ormalization '''f'''orm '''KD'''}}, форма нормализации KD — совместимая декомпозиция — алгоритм, согласно которому последовательно выполняются каниническая декомпозиция и замены символов текста по таблицам совместимой декомпозиции. Таблицы совместимой декомпозиции предусматривают замену на почти эквивалентные символов<ref>[http://habrahabr.ru/post/45489/ Нормализация Unicode]</ref>:
* похожих на буквы (ℍ и ℌ);
* обведённых кружками (①);
* с изменёнными размерами (カ и カ);
* повёрнутых (︷ и {);
* степеней (⁹ и ₉);
* дробей (¼);
* других (™).
Примеры:
{| style="text-align:center;"
|
{| class="wikitable" style="text-align:center;"
| <big>ℍ</big>
|-
| <small>U+210d</small>
|}
| colspan="2" | →
|
{| class="wikitable" style="text-align:center;"
| <big>H</big>
|-
| <small>U+0048</small>
|}
|}
{| style="text-align:center;"
|
{| class="wikitable" style="text-align:center;"
| <big>①</big>
|-
| <small>U+2460</small>
|}
| colspan="2" | →
|
{| class="wikitable" style="text-align:center;"
| <big>1</big>
|-
| <small>U+0031</small>
|}
|}
{|
|
{| class="wikitable" style="text-align:center;"
| <big>カ</big>
|-
| <small>U+FF76</small>
|}
| colspan="2" | →
|
{| class="wikitable" style="text-align:center;"
| <big>カ</big>
|-
| <small>U+30AB</small>
|}
|}
{|
|
{| class="wikitable" style="text-align:center;"
| <big>︷</big>
|-
| <small>U+FE37</small>
|}
| colspan="2" | →
|
{| class="wikitable" style="text-align:center;"
| <big>{</big>
|-
| <small>U+007B</small>
|}
|}
{|
|
{| class="wikitable" style="text-align:center;"
| <big>⁹</big>
|-
| <small>U+2079</small>
|}
| colspan="2" | →
|
{| class="wikitable" style="text-align:center;"
| <big>9</big>
|-
| <small>U+0039</small>
|}
|}
{|
|
{| class="wikitable" style="text-align:center;"
| <big>¼</big>
|-
| <small>U+00BC</small>
|}
| colspan="2" | →
|
{| class="wikitable" style="text-align:center;"
| <big>1</big> || <big> ⁄ </big> || <big>4</big>
|-
| <small>U+0031</small> || <small>U+2044</small> || <small>U+0034</small>
|}
|}
{|
|
{| class="wikitable" style="text-align:center;"
| <big>™</big>
|-
| <small>U+2122</small>
|}
| colspan="2" | →
|
{| class="wikitable" style="text-align:center;"
| <big>T</big> || <big>M</big>
|-
| <small>U+0054</small> || <small>U+004D</small>
|}
|}
=== NFKC ===
NFKC, {{lang-en|'''n'''ormalization '''f'''orm '''KC'''}}, форма нормализации KC — алгоритм, согласно которому последовательно выполняются совместимая декомпозиция (алгоритм NFKD) и каноническая композиция (алгоритм NFC).
=== Примеры ===
{| class="standard"
!Исходный текст||NFD||NFC||NFKD||NFKC
|-
| <!-- fi -->
{| class="wikitable" style="text-align:center;"
| <big>fi</big>
|-
| <small>U+FB01</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>fi</big>
|-
| <small>U+FB01</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>fi</big>
|-
| <small>U+FB01</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>fi</big>
|-
| <small>U+FB01</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>f</big> || <big>i</big>
|-
| <small>U+0066</small> || <small>U+0069</small>
|}
|-
| <!-- 2^5 -->
{| class="wikitable" style="text-align:center;"
| <big>2</big> || <big>⁵</big>
|-
| <small>U+0032</small> || <small>U+2075</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>2</big> || <big>⁵</big>
|-
| <small>U+0032</small> || <small>U+2075</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>2</big> || <big>⁵</big>
|-
| <small>U+0032</small> || <small>U+2075</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>2</big> || <big>5</big>
|-
| <small>U+0032</small> || <small>U+0035</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>2</big> || <big>5</big>
|-
| <small>U+0032</small> || <small>U+0035</small>
|}
|-
| <!-- "s" (looks like "f") with two dots -->
{| class="wikitable" style="text-align:center;"
| colspan="2" | <big>ẛ̣</big>
|-
| <small>U+1E9B</small> || <small>U+0323</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>ſ</big> || <big>̣</big> || <big>̇</big>
|-
| <small>U+017F</small> || <small>U+0323</small> || <small>U+0307</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>ẛ</big> || <big>̣</big>
|-
| <small>U+1E9B</small> || <small>U+0323</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>s</big> || <big>̣</big> || <big>̇</big>
|-
| <small>U+0073</small> || <small>U+0323</small> || <small>U+0307</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>ṩ</big>
|-
| <small>U+1E69</small>
|}
|-
| <!-- "й" -->
{| class="wikitable" style="text-align:center;"
| <big>й</big>
|-
| <small>U+0439</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>и</big> || <big> ̆</big>
|-
| <small>U+0438</small> || <small>U+0306</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>й</big>
|-
| <small>U+0439</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>и</big> || <big> ̆</big>
|-
| <small>U+0438</small> || <small>U+0306</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>й</big>
|-
| <small>U+0439</small>
|}
|-
| <!-- "ё" -->
{| class="wikitable" style="text-align:center;"
| <big>ё</big>
|-
| <small>U+0451</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>е</big> || <big>̈</big>
|-
| <small>U+0435</small> || <small>U+0308</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>ё</big>
|-
| <small>U+0451</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>е</big> || <big>̈</big>
|-
| <small>U+0435</small> || <small>U+0308</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>ё</big>
|-
| <small>U+0451</small>
|}
|-
| <!-- "А" -->
{| class="wikitable" style="text-align:center;"
| <big>А</big>
|-
| <small>U+0410</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>А</big>
|-
| <small>U+0410</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>А</big>
|-
| <small>U+0410</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>А</big>
|-
| <small>U+0410</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>А</big>
|-
| <small>U+0410</small>
|}
|-
| <!-- "が" -->
{| class="wikitable" style="text-align:center;"
| <big>が</big>
|-
| <small>U+304C</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>か</big> || <big>゙</big>
|-
| <small>U+304B</small> || <small>U+3099</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>が</big>
|-
| <small>U+304C</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>か</big> || <big>゙</big>
|-
| <small>U+304B</small> || <small>U+3099</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>が</big>
|-
| <small>U+304C</small>
|}
|-
| <!-- "VIII" -->
{| class="wikitable" style="text-align:center;"
| <big>Ⅷ</big>
|-
| <small>U+2167</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>Ⅷ</big>
|-
| <small>U+2167</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>Ⅷ</big>
|-
| <small>U+2167</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>V</big> || <big>I</big> || <big>I</big> || <big>I</big>
|-
| <small>U+0049</small> || <small>U+0049</small> || <small>U+0049</small> || <small>U+0049</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>V</big> || <big>I</big> || <big>I</big> || <big>I</big>
|-
| <small>U+0049</small> || <small>U+0049</small> || <small>U+0049</small> || <small>U+0049</small>
|}
|-
| <!-- "ç" -->
{| class="wikitable" style="text-align:center;"
| <big>ç</big>
|-
| <small>U+00E7</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>c</big> || <big>̧</big>
|-
| <small>U+0063</small> || <small>U+0327</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>ç</big>
|-
| <small>U+00E7</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>c</big> || <big>̧</big>
|-
| <small>U+0063</small> || <small>U+0327</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>ç</big>
|-
| <small>U+00E7</small>
|}
|-
|}
== Двунаправленное письмо ==
Стандарт Юникод поддерживает письменности языков как с направлением написания слева направо ({{lang-en|left-to-right, LTR}}), так и с написанием справа налево ({{lang-en|right-to-left, RTL}}) — например, [[арабское письмо|арабское]] и [[еврейский алфавит|еврейское]] письмо. В обоих случаях символы хранятся в «естественном» порядке; их отображение с учётом нужного направления письма обеспечивается приложением.
Кроме того, Юникод поддерживает комбинированные тексты, сочетающие фрагменты с разным направлением письма. Данная возможность называется ''двунаправленность'' ({{lang-en|bidirectional text, BiDi}}). Некоторые упрощённые обработчики текста (например, в сотовых телефонах) могут поддерживать Юникод, но не иметь поддержки двунаправленности. Все символы Юникода поделены на несколько категорий: пишущиеся слева направо, пишущиеся справа налево, и пишущиеся в любом направлении. Символы последней категории (в основном это [[знаки пунктуации]]) при отображении принимают направление окружающего их текста.
== Представленные символы ==
{{Main|Символы, представленные в Юникоде}}
[[Файл:Roadmap to Unicode BMP.svg|right|273px|thumb|Схема базовой плоскости Unicode, см. [[Символы, представленные в Юникоде#Базовая многоязыковая плоскость|описание]]]]
Юникод включает практически все современные [[письменность|письменности]], в том числе:
{{columns-list|2|
* [[арабское письмо|арабскую]],
* [[армянское письмо|армянскую]],
* [[бенгальское письмо|бенгальскую]],
* [[Бирманское письмо|бирманскую]],
* [[Глаголица|глаголицу]],
* [[Греческий алфавит|греческую]],
* [[грузинское письмо|грузинскую]],
* [[деванагари]],
* [[еврейский алфавит|еврейскую]],
* [[Кириллица|кириллицу]],
* [[китайское письмо|китайскую]] (китайские иероглифы активно используются в [[японский язык|японском языке]], а также достаточно редко в [[корейский язык|корейском]]),
* [[коптское письмо|коптскую]],
* [[Кхмерское письмо|кхмерскую]],
* [[Латинский алфавит|латинскую]],
* [[Тамильское письмо|тамильскую]],
* [[Хангыль|корейскую (хангыль)]],
* [[письмо чероки|чероки]],
* [[Эфиопское письмо|эфиопскую]],
* [[японское письмо|японскую]] (которая включает в себя кроме [[кандзи|китайских иероглифов]] ещё и [[кана|слоговую азбуку]]),
}}
и другие.
С академическими целями добавлены многие исторические письменности, в том числе: [[руны|германские руны]], [[Древнетюркское руническое письмо|древнетюркские руны]], [[древнегреческий язык|древнегреческая]], [[египетские иероглифы]], [[клинопись]], [[письменность майя]], [[этрусский алфавит]].
В Юникоде представлен широкий набор [[таблица математических символов|математических]] и [[музыка]]льных символов, а также [[пиктограмма|пиктограмм]].
В Юникод принципиально не включаются [[государственный флаг|государственные флаги]], [[логотип]]ы компаний и продуктов, хотя они и встречаются в шрифтах (например, логотип [[Apple]] в кодировке [[MacRoman]] (0xF0) или логотип [[Microsoft Windows|Windows]] в шрифте Wingdings (0xFF)). В юникодовских шрифтах логотипы должны размещаться только в области пользовательских символов.
== ISO/IEC 10646 ==
Консорциум Юникода работает в тесной связи с рабочей группой ISO/IEC/JTC1/SC2/WG2, которая занимается разработкой международного стандарта 10646 ([[ISO]]/[[IEC]] 10646). Между стандартом Юникода и ISO/IEC 10646 установлена синхронизация, хотя каждый стандарт использует свою терминологию и систему документации.
Сотрудничество Консорциума Юникода с Международной организацией по стандартизации ({{lang-en|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 значит ''универсальный многооктетный'' (многобайтовый) ''кодированный набор символов'' ({{lang-en|universal multiple-octet coded character set}}). UCS-2 можно считать подмножеством UTF-16 (UTF-16 без суррогатных пар), а UCS-4 является синонимом для UTF-32.
== Способы представления ==
Юникод имеет несколько форм представления ({{lang-en|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 ([http://tools.ietf.org/html/rfc4042 RFC 4042]).
В [[Microsoft]] [[Windows NT]] и основанных на ней системах [[Windows 2000]] и [[Windows XP]] в основном [[юникод в операционных системах Microsoft|используется]] форма UTF-16LE. В [[UNIX]]-подобных [[Операционная система|операционных системах]] [[GNU/Linux]], [[BSD]] и [[Mac OS X]] принята форма UTF-8 для файлов и UTF-32 или UTF-8 для обработки символов в [[оперативная память|оперативной памяти]].
[[Punycode]] — другая форма кодирования последовательностей Unicode-символов в так называемые ACE-последовательности, которые состоят только из алфавитно-цифровых символов, как это разрешено в доменных именах.
=== UTF-8 ===
{{Основная статья|UTF-8}}
UTF-8 — представление Юникода, обеспечивающее наилучшую совместимость со старыми системами, использовавшими 8-битные символы. Текст, состоящий только из символов с номером меньше 128, при записи в UTF-8 превращается в обычный текст [[ASCII]]. И наоборот, в тексте UTF-8 любой [[байт]] со значением меньше 128 изображает символ ASCII с тем же кодом. Остальные символы Юникода изображаются последовательностями длиной от 2 до 6 байт (на деле, только до 4 байт, поскольку в Юникоде нет символов с кодом больше 10FFFF, и вводить их в будущем не планируется), в которых первый байт всегда имеет вид <code>11xxxxxx</code>, а остальные — <code>10xxxxxx</code>. В UTF-8 не используются суррогатные пары, 4-x байтов достаточно для записи любого символа юникода.
Формат UTF-8 был изобретён [[2 сентября]] [[1992 год]]а [[Томпсон, Кен|Кеном Томпсоном]] и [[Пайк, Роб|Робом Пайком]] и реализован в [[Plan 9]]<ref>http://www.cl.cam.ac.uk/~mgk25/ucs/utf-8-history.txt {{ref-en}}</ref>. Сейчас стандарт UTF-8 официально закреплён в документах RFC 3629 и ISO/IEC 10646 Annex D.
Символы UTF-8 получаются из Unicode [http://www.linuxdoc.ru/manpages/man7/utf-8.7.html следующим образом]:
<pre>Unicode UTF-8:
0x00000000 — 0x0000007F: 0xxxxxxx
0x00000080 — 0x000007FF: 110xxxxx 10xxxxxx
0x00000800 — 0x0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx
0x00010000 — 0x001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
</pre>
Теоретически возможны, но не включены в стандарт также:
<pre>0x00200000 — 0x03FFFFFF: 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
0x04000000 — 0x7FFFFFFF: 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
</pre>
Несмотря на то, что UTF-8 позволяет указать один и тот же символ несколькими способами, только наиболее короткий из них правильный. Остальные формы должны отвергаться по соображениям безопасности.
=== Порядок байтов ===
В потоке данных UTF-16 младший байт может записываться либо перед старшим ({{lang-en|UTF-16 little-endian}}), либо после старшего ({{lang-en|UTF-16 big-endian}}). Аналогично существует два варианта четырёхбайтной кодировки — UTF-32LE и UTF-32BE.
Для определения формата представления Юникода в начало текстового файла записывается
[[Магическое число (программирование)#Сигнатура данных|сигнатура]] — символ U+FEFF (неразрывный пробел с нулевой шириной), также именуемый ''[[Маркер последовательности байтов|маркером последовательности байтов]]'' ({{lang-en|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 ([http://unicode.org/faq/utf_bom.html#gen6 unicode.org]).
=== Юникод и традиционные кодировки ===
Внедрение Юникода привело к изменению подхода к традиционным 8-битным кодировкам. Если раньше кодировка задавалась шрифтом, то теперь она задаётся таблицей соответствия между данной кодировкой и Юникодом. Фактически 8-битные кодировки превратились в форму представления некоторого подмножества Юникода. Это намного упростило создание программ, которые должны работать с множеством разных кодировок: теперь, чтобы добавить поддержку ещё одной кодировки, надо всего лишь добавить ещё одну таблицу перекодировки в Юникод.
Кроме того, многие форматы данных позволяют вставлять любые символы Юникода, даже если документ записан в старой 8-битной кодировке. Например, в HTML можно использовать [[Мнемоники в HTML|коды с амперсандом]].
=== Реализации ===
Большинство современных операционных систем в той или иной степени обеспечивают поддержку Юникода.
В операционных системах семейства [[Windows NT]] для внутреннего представления имён файлов и других системных строк используется двухбайтовая кодировка UTF-16LE. Системные вызовы, принимающие строковые параметры, существуют в однобайтном и двухбайтном вариантах. Подробнее см. в статье [[Юникод в операционных системах Microsoft]].
[[UNIX]]-подобные операционные системы, в том числе [[GNU/Linux]], [[BSD]], [[Mac OS X]], используют для представления Юникода кодировку UTF-8. Большинство программ могут работать с UTF-8 как с традиционными однобайтными кодировками, не обращая внимания на то, что символ представляется как несколько последовательных байт. Для работы с отдельными символами строки обычно перекодируются в UCS-4, так что каждому символу соответствует [[машинное слово]].
Одной из первых успешных коммерческих реализаций Юникода стала среда программирования [[Java]]. В ней принципиально отказались от 8-битного представления символов в пользу 16-битного. Это решение увеличивало расход памяти, но позволило вернуть в программирование важную абстракцию: произвольный одиночный символ (тип <code>char</code>). В частности, программист мог работать со строкой, как с простым массивом. К сожалению, успех не был окончательным, Юникод перерос ограничение в 16 бит и к версии J2SE 5.0 произвольный символ снова стал занимать переменное число единиц памяти — один <code>char</code> или два (см. [[UTF-16|суррогатная пара]]).
Сейчас большинство языков программирования поддерживают строки Юникода, хотя их представление может различаться в зависимости от реализации.
== Методы ввода ==
Поскольку ни одна [[раскладка клавиатуры]] не может позволить вводить все символы Юникода одновременно, от [[операционная система|операционных систем]] и [[прикладное программное обеспечение|прикладных программ]] требуется поддержка альтернативных методов ввода произвольных символов Юникода.
=== [[Microsoft Windows]] ===
{{Main|Юникод в операционных системах Microsoft}}
Хотя начиная с [[Windows 2000]], служебная программа «Таблица символов» (charmap.exe) поддерживает юникодные символы и позволяет копировать их в [[буфер обмена]], но эта поддержка ограничена только базовой плоскостью (коды символов U+0000-U+FFFF). Символы с кодами от U+10000 «Таблица символов» не отображает.
Похожая таблица есть, например, в [[Microsoft Word]].
Иногда можно набрать [[Шестнадцатеричная система счисления|шестнадцатеричный]] код, нажать [[Alt (клавиша)|Alt]]+X, и код будет заменён на соответствующий символ, например, в [[WordPad]], Microsoft Word. В редакторах Alt+X выполняет и обратное преобразование.
Во многих программах MS Windows, чтобы получить символ Unicode, нужно при нажатой клавише Alt набрать десятичное значение кода символа на цифровой клавиатуре. Например, полезными при наборе кириллических текстов будут комбинации Alt+0171 («), Alt+0187 (») и Alt+0769 ([[знак ударения]]). Интересны также комбинации 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: при зажатых клавишах {{key|Ctrl|Shift}} ввести шестнадцатеричный код (начиная с некоторой версии GTK+ ввод кода нужно предварить нажатием клавиши ''«U»''). Вводимый шестнадцатеричный код может иметь до 32 бит в длину, позволяя вводить любые символы Юникода без использования суррогатных пар.
Все приложения [[X Window System|X Window]], включая GNOME и [[KDE]], поддерживают ввод при помощи клавиши {{Key|[[Compose]]}}. Для клавиатур, на которых нет отдельной клавиши [[Compose]], для этой цели можно назначить любую клавишу — например, {{Key|[[Caps Lock]]}}.
Консоль GNU/Linux также допускает ввод символа Юникода по его коду — для этого десятичный код символа нужно ввести цифрами расширенного блока клавиатуры при зажатой клавише {{Key|Alt}}. Можно вводить символы и по их шестнадцатеричному коду: для этого нужно зажать клавишу {{key|AltGr}}, и для ввода цифр A—F использовать клавиши расширенного блока клавиатуры от {{Key|NumLock}} до {{Key|Enter}} (по часовой стрелке). Поддерживается также и ввод в соответствии с ISO 14755. Для того чтобы перечисленные способы могли работать, нужно включить в консоли режим Юникода вызовом <tt>unicode_start</tt>(1) и выбрать подходящий шрифт вызовом <tt>setfont</tt>(8).
[[Mozilla Firefox]] для Linux поддерживает ввод символов по ISO 14755.
== Проблемы Юникода ==
В Юникоде английское «a» и польское «a» — один и тот же символ. Точно так же одним символом (но отличающимся от «a» латинского) считаются русское «а» и сербское «а». Такой принцип кодирования не универсален; по-видимому, решения «на все случаи жизни» вообще не может существовать.
* Тексты на [[китайский язык|китайском]], [[корейский язык|корейском]] и [[японский язык|японском]] языках имеют традиционное написание сверху вниз, начиная с правого верхнего угла. Переключение горизонтального и вертикального написания для этих языков не предусмотрено в Юникоде — это должно осуществляться средствами [[язык разметки|языков разметки]] или внутренними механизмами [[текстовый процессор|текстовых процессоров]].
* Юникод предусматривает возможность разных начертаний одного и того же символа в зависимости от языка. Так, [[китайское письмо|китайские иероглифы]] могут иметь разные начертания в китайском, японском ([[кандзи]]) и корейском ([[ханча]]), но при этом в Юникоде обозначаться одним и тем же символом (так называемая CJK-унификация), хотя упрощённые и полные иероглифы всё же имеют разные коды. Часто возникают накладки, когда, например, японский текст выглядит «по-китайски». Аналогично, [[русский язык|русский]] и [[сербский язык]]и используют разное начертание курсивных букв ''п'' и ''т'' (в сербском они выглядят как <span style="text-decoration: overline; font-style: italic">и</span> и <span style="text-decoration: overline; font-style: italic">ш</span>, см. [[сербский курсив]]). Поэтому нужно следить, чтобы текст всегда был правильно помечен как относящийся к тому или другому языку.
* Перевод из строчных букв в заглавные тоже зависит от языка. Например: в [[турецкий язык|турецком]] существуют буквы [[i без точки|İi и Iı]] — таким образом, турецкие правила изменения регистра конфликтуют с [[английский язык|английскими]], которые предписывают «i» переводить в «I». Подобные проблемы есть и в других языках — например, в канадском диалекте французского языка регистр переводится немного не так, как во Франции.<ref>[http://www.transl-gunsmoker.ru/2008/11/unicode.html Регистр в Unicode — это непросто<!-- Заголовок добавлен ботом -->]</ref>
* Даже с [[арабские цифры|арабскими цифрами]] есть определённые типографские тонкости: цифры бывают «прописными» и «[[минускульные цифры|строчными]]», пропорциональными и [[моноширинный шрифт|моноширинными]]<ref>В большинстве шрифтов для ПК реализованы «прописные» (маюскульные) моноширинные цифры.</ref> — для Юникода разницы между ними нет. Подобные нюансы остаются за программным обеспечением.
Некоторые недостатки связаны не с самим Юникодом, а с возможностями обработчиков текста.
* Файлы неанглийского текста в Юникоде всегда занимают больше места, так как один символ кодируется не одним байтом, как в различных национальных кодировках, а последовательностью байтов (исключение составляет UTF-8 для языков, алфавит которых укладывается в ASCII, а также наличие в тексте символов двух и более языков, алфавит которых ''не'' укладывается в ASCII<ref>В некоторых случаях документ (не простой текст) в Юникоде может занимать существенно меньше места, чем документ в однобайтовой кодировке. Например, если некая веб-страница содержит примерно поровну русского и греческого текста, то в однобайтовой кодировке придётся либо русские, либо греческие буквы записывать, используя возможности формата документов, в виде кодов с амперсандом, которые занимают 6—7 байт на символ (при использовании десятичных кодов), то есть в среднем на букву придётся 3,5—4 байта, в то время как UTF-8 занимает только 2 байта на греческую или русскую букву.</ref>). Файл шрифта, необходимый для отображения всех символов таблицы Юникод, занимает сравнительно много места в памяти и требует бо́льших вычислительных ресурсов, чем шрифт только одного национального языка пользователя<ref>Один из файлов шрифтов Arial Unicode имеет размер 24 мегабайта; существует Times New Roman размером 120 мегабайт, он содержит количество символов, близкое к 65536.</ref>. С увеличением мощности компьютерных систем и удешевлением памяти и дискового пространства эта проблема становится всё менее существенной; тем не менее, она остаётся и в ближайшем будущем останется актуальной для портативных устройств, например, для мобильного телефона<ref>Даже для самого современного и дорогого мобильного телефона затруднительно выделить 120 Мбайт памяти для полного Юникод-шрифта. На практике использование полных шрифтов требуется редко.</ref>.
* Хотя поддержка Юникода реализована в наиболее распространённых операционных системах, до сих пор не всё прикладное программное обеспечение поддерживает корректную работу с ним. В частности, не всегда обрабатываются метки порядка байтов ([[Byte order mark|BOM]]) и плохо поддерживаются диакритические символы. Проблема является временной и есть следствие сравнительной новизны стандартов Юникода (в сравнении с однобайтовыми национальными кодировками).
* Производительность всех программ обработки строк (в том числе и сортировок в БД) снижается при использовании Юникода вместо однобайтовых кодировок.
* [[Философия UNIX]] (перенаправление ввода-вывода из одной программы в другую) неявно подразумевает, что минимальная единица ввода-вывода — [[байт]] — совпадает с одним символом текста. Поэтому UNIX-подобные ОС перешли на Unicode (UTF-8) относительно поздно.
** По причине побайтовой обработки строк, популярная в [[Веб-разработка|веб-разработке]] [[СУБД]] [[MySQL]] выдаёт некорректные результаты при обработке [[регулярки|регулярных выражений]] на Юникод.<ref>[http://dev.mysql.com/doc/refman/5.7/en/regexp.html «The REGEXP and RLIKE operators work in byte-wise fashion, so they are not multi-byte safe and may produce unexpected results with multi-byte character sets.»]</ref> При необходимости таких операций приходится переходить на однобайтовые кодировки.
Первоначальная версия Юникода предполагала наличие большого количества готовых символов, в последующем было отдано предпочтение сочетанию букв с диакритическими модифицирующими знаками ({{lang-en|combining diacritics}}). Например, русские буквы Ё (U+0401) и Й (U+0419) существуют в виде монолитных символов, хотя могут быть представлены и набором базового символа с последующим [[диакритический знак|диакритическим знаком]], то есть в составной форме ({{lang-en|decomposed}}): Е+ ̈ (U+0415 U+0308), И+ ̆ (U+0418 U+0306). В то же время множество символов из языков с [[алфавиты на основе кириллицы|алфавитами на основе кириллицы]] не имеют монолитных форм.
Наконец, некоторые редкие системы письма всё ещё не представлены должным образом в Юникоде. Изображение «длинных» надстрочных символов, простирающихся над несколькими буквами, как, например, в [[церковнославянский язык|церковнославянском языке]], пока не реализовано.
== «Юникод» или «Уникод»? ==
«Unicode» — одновременно и имя собственное (или часть имени, например, Unicode Consortium), и имя нарицательное, происходящее из английского языка.
На первый взгляд предпочтительнее использовать написание «Уникод». В [[Русский язык|русском языке]] уже есть [[Морфема|морфемы]] «уни-» (слова с латинским элементом «uni-» традиционно переводились и писались через «уни-»: универсальный, униполярный, унификация, униформа) и «код». Напротив, торговые марки, заимствованные из [[Английский язык|английского языка]], обычно передаются посредством практической транскрипции, в которой деэтимологизированное сочетание букв «uni-» записывается в виде «юни-» («[[Юнилевер]]», «[[UNIX|Юникс]]» и т. п.), то есть точно так же, как в случае с побуквенными сокращениями, вроде [[UNICEF]] «United Nations International Children’s Emergency Fund» — [[ЮНИСЕФ]].
Написание «Юникод» уже твёрдо вошло в русскоязычные тексты. В [[Википедия|Википедии]] используется более распространённый вариант. В [[MS Windows]] используется вариант «Юникод».
На сайте Консорциума есть специальная страница, где рассматриваются проблемы передачи слова «Unicode» в различных языках и системах письма. Для русской кириллицы указан вариант «Юникод»<ref name=autogenerated1 />.
Формы, принятые иностранными организациями для русской передачи слова «Unicode», являются рекомендательными.
== См. также ==
* [[Символы, представленные в Юникоде]]
* [[ASCII]]
* [[ISO 8859-1]]
* [[UTF-8]]
* [[UTF-16]]
* [[UTF-32]]
* [[Кириллица в Юникоде]]
* [[Дроби в Юникоде]]
* [[XeTeX]]
* [[Шрифты, поддерживающие юникод]]
* [[Свободные универсальные шрифты]]
* [[Windows Glyph List 4]]
* [[Широкий символ]]
* Библиотека [[GLib]] содержит широкий набор функций для работы c символами и строками в кодировке Unicode
* [[Проект:Внесение символов алфавитов народов России в Юникод]]
== Примечания ==
{{Примечания}}
== Ссылки ==
* [http://www.unicode.org/ Официальный сайт Консорциума Юникода] {{ref-en}}
* {{dmoz|Computers/Software/Globalization/Character_Encoding/Unicode/|Unicode}} {{ref-en}}
* [http://www.unicode.org/standard/translations/russian.html Что такое Unicode?] {{ref-ru}}
* Последняя версия [http://www.unicode.org/versions/latest/ стандарта Юникод] {{ref-en}}
* [http://unicode-table.com/ Таблица символов Юникода с названиями и описаниями] {{ref-ru}} {{ref-en}} {{ref-de}}
* [http://www.unicode.org/versions/Unicode5.0.0/appC.pdf Связь Юникода и ISO/IEC 10646] (файл PDF) {{ref-en}}
* [http://www.cl.cam.ac.uk/~mgk25/unicode.html FAQ по UTF-8 и Unicode] {{ref-en}}
* [[Кириллица в Юникоде]]: http://www.unicode.org/charts/PDF/U0400.pdf, http://www.unicode.org/charts/PDF/U0500.pdf, http://www.unicode.org/charts/PDF/U2DE0.pdf, http://www.unicode.org/charts/PDF/UA640.pdf {{ref-en}}
* [http://www.i18nguy.com/surrogates.html Включение поддержки дополнительных символов Юникода в Windows] {{ref-en}}
* [http://www.fileformat.info/info/unicode/char/search.htm Поиск по символам Юникода] {{ref-en}}
{{Стандарты ISO}}
{{Шрифтовой дизайн}}
[[Категория:Юникод|*]]
[[Категория:Стандарты Интернета]]
[[Категория:Стандарты ISO]]' |
Вики-текст новой страницы после правки (new_wikitext ) | '[[Файл:Unicode logo.svg|thumb|right|Логотип Unicode Consortium]]
'''Юнико́д'''<ref name=autogenerated1>{{cite web|url=http://www.unicode.org/standard/UnicodeTranscriptions.html|title=Unicode Transcriptions|publisher=|date=|accessdate=10 мая 2010|lang=en|archiveurl=http://www.webcitation.org/618OOcYRY|archivedate=2011-08-22}}</ref> (чаще всего) или '''Унико́д'''<ref>[http://www.paratype.ru/help/term/terms.asp?code=361 Уникод в словаре Paratype]</ref> ({{lang-en|Unicode}}) — стандарт [[Набор символов|кодирования символов]], позволяющий представить знаки почти всех письменных [[язык]]ов.<ref name='unicode-techintro'>{{cite web|url=http://www.unicode.org/standard/principles.html|title=The Unicode® Standard: A Technical Introduction|accessdate=2010-07-04|archiveurl=http://www.webcitation.org/618OPFD0i|archivedate=2011-08-22}}</ref>
Стандарт предложен в [[1991 год]]у некоммерческой организацией «Консорциум Юникода» ({{lang-en|Unicode Consortium, Unicode Inc.}}).<ref>{{cite web|url=http://www.unicode.org/history/publicationdates.html|title=History of Unicode Release and Publication Dates|accessdate=2010-07-04|archiveurl=http://www.webcitation.org/618OPfL5z|archivedate=2011-08-22}}</ref><ref>{{cite web|url=http://www.unicode.org/consortium/consort.html|title=The Unicode Consortium|accessdate=2010-07-04|archiveurl=http://www.webcitation.org/618OQ5Syr|archivedate=2011-08-22}}</ref> Применение этого стандарта позволяет закодировать очень большое число символов из разных письменностей: в документах Unicode могут соседствовать китайские [[иероглиф]]ы, математические символы, буквы [[греческий алфавит|греческого алфавита]], [[латинский алфавит|латиницы]] и [[кириллица|кириллицы]], при этом становится ненужным переключение [[кодовая страница|кодовых страниц]].<ref name='unicode-foreword'>{{cite web|url=http://www.unicode.org/versions/Unicode5.2.0/Foreword.pdf|title=Foreword|accessdate=2010-07-04|archiveurl=http://www.webcitation.org/618OQVqZN|archivedate=2011-08-22}}</ref>
Стандарт состоит из двух основных разделов: универсальный набор символов ({{lang-en|UCS, universal character set}}) и семейство кодировок ({{lang-en|UTF, Unicode transformation format}}). Универсальный набор символов задаёт однозначное соответствие символов [[код]]ам — элементам кодового пространства, представляющим неотрицательные целые числа. Семейство кодировок определяет машинное представление последовательности кодов UCS.
Коды в стандарте Юникод разделены на несколько областей. Область с кодами от U+0000 до U+007F содержит символы набора [[ASCII]] с соответствующими кодами. Далее расположены области знаков различных письменностей, знаки пунктуации и технические символы. Часть кодов зарезервирована для использования в будущем.<ref name='unicode-02'>{{cite web|url=http://www.unicode.org/versions/Unicode5.2.0/ch02.pdf|title=General Structure|accessdate=2010-07-05|archiveurl=http://www.webcitation.org/618OQvPSL|archivedate=2011-08-22}}</ref> Под символы кириллицы выделены области знаков с кодами от U+0400 до U+052F, от U+2DE0 до U+2DFF, от U+A640 до U+A69F (см. [[Кириллица в Юникоде]]).<ref>{{cite web|url=http://www.unicode.org/versions/Unicode5.2.0/ch07.pdf|title=European Alphabetic Scripts|accessdate=2010-07-04|archiveurl=http://www.webcitation.org/618ORPqRV|archivedate=2011-08-22}}</ref>
== Предпосылки создания и развитие Юникода ==
К концу [[1980-е|1980-х годов]] стандартом стали 8-битные символы, при этом существовало множество разных 8-битных кодировок, и постоянно появлялись всё новые. Это объяснялось как постоянным расширением круга поддерживаемых языков, так и стремлением создать кодировку, частично совместимую с какой-нибудь другой (характерный пример — появление [[альтернативная кодировка|альтернативной кодировки]] для русского языка, обусловленное эксплуатацией западных программ, созданных для кодировки [[CP437]]). В результате появилось несколько проблем:
# Проблема «[[кракозябры|кракозябр]]» (отображения документов в неправильной кодировке):<ref name='unicode-foreword' /> её можно было решить либо последовательным внедрением методов указания используемой кодировки, либо внедрением единой для всех кодировки.
# Проблема ограниченности набора символов:<ref name='unicode-foreword' /> её можно было решить либо переключением шрифтов внутри документа, либо внедрением «широкой» кодировки. Переключение шрифтов издавна практиковалось в [[текстовый процессор|текстовых процессорах]], причём часто использовались [[нестандартные шрифты|шрифты с нестандартной кодировкой]], т. н. «dingbat fonts» — в итоге при попытке перенести документ в другую систему все нестандартные символы превращались в кракозябры.
# Проблема преобразования одной кодировки в другую: её можно было решить либо составлением таблиц перекодировки для каждой пары кодировок, либо использованием промежуточного преобразования в третью кодировку, включающую все символы всех кодировок.<ref>{{cite web|url=http://www.unicode.org/history/unicode88.pdf|title=Unicode 88|accessdate=2010-07-08|archiveurl=http://www.webcitation.org/618ORt6df|archivedate=2011-08-22}}</ref>
# Проблема дублирования шрифтов: особенно для каждой кодировки делался свой шрифт, даже если эти кодировки частично (или полностью) совпадали по набору символов: эту проблему можно было решить, делая «большие» шрифты, из которых потом выбираются нужные для данной кодировки символы — однако это требует создания единого реестра символов, чтобы определять, чему что соответствует.
Было признано необходимым создание единой «широкой» кодировки. Кодировки с переменной длиной символа, широко использующиеся в Восточной Азии, были признаны слишком сложными в использовании, поэтому было решено использовать символы фиксированной ширины. Использование 32-битных символов казалось слишком расточительным, поэтому было решено использовать 16-битные.
Таким образом, первая версия Юникода представляла собой кодировку с фиксированным размером символа в 16 бит, то есть общее число кодов было 2<sup>16</sup> (65 536). Отсюда происходит практика обозначения символов четырьмя шестнадцатеричными цифрами (например, <code>U+04F0</code>). При этом в Юникоде планировалось кодировать не все существующие символы, а только те, которые необходимы в повседневном обиходе. Редко используемые символы должны были размещаться в «области пользовательских символов» ({{lang|en|private use area}}), которая первоначально занимала коды <code>U+D800…U+F8FF</code>. Чтобы использовать Юникод также и в качестве промежуточного звена при преобразовании разных кодировок друг в друга, в него включили все символы, представленные во всех наиболее известных кодировках.
В дальнейшем, однако, было принято решение кодировать все символы и в связи с этим значительно расширить кодовую область. Одновременно с этим, коды символов стали рассматриваться не как 16-битные значения, а как абстрактные числа, которые в компьютере могут представляться множеством разных способов (см. [[#Способы представления|Способы представления]]).
Поскольку в ряде компьютерных систем (например, [[Windows NT]]<ref name="windows-nt">{{cite web|url=http://support.microsoft.com/kb/99884|title=Unicode and Microsoft Windows NT|work=Microsoft Support|lang=en|archiveurl=http://www.webcitation.org/618OSVei1|archivedate=2011-08-22}}</ref>) фиксированные 16-битные символы уже использовались в качестве кодировки по умолчанию, было решено все наиболее важные знаки кодировать только в пределах первых 65 536 позиций (так называемая {{lang-en|basic multilingual plane, BMP}}). Остальное пространство используется для «дополнительных символов» ({{lang-en|supplementary characters}}): систем письма вымерших языков или очень редко используемых [[китай]]ских иероглифов, математических и музыкальных символов.
Для совместимости со старыми 16-битными системами была изобретена система [[UTF-16]], где первые 65 536 позиций, за исключением позиций из интервала U+D800…U+DFFF, отображаются непосредственно как 16-битные числа, а остальные представляются в виде «суррогатных пар» (первый элемент пары из области U+D800…U+DBFF, второй элемент пары из области U+DC00…U+DFFF). Для суррогатных пар была использована часть кодового пространства (2048 позиций), отведённого «для частного использования».
Поскольку в UTF-16 можно отобразить только 2<sup>20</sup>+2<sup>16</sup>−2048 ({{formatnum:1112064}}) символов, то это число и было выбрано в качестве окончательной величины кодового пространства Юникода (диапазон кодов: 0x000000-0x10FFFF)
Хотя кодовая область Юникода была расширена за пределы 2<sup>16</sup> уже в версии 2.0, первые символы в «верхней» области были размещены только в версии 3.1.
Роль этой кодировки в веб-секторе постоянно растёт, на начало 2010 доля веб-сайтов, использующих Юникод, составила около 50 %.<ref>{{cite web|url=http://w3pro.ru/news/unicode-ispolzuetsya-pochti-na-50-veb-saitov|title=Unicode используется почти на 50% веб-сайтов|lang=ru|archiveurl=http://www.webcitation.org/618OTTP1T|archivedate=2011-08-22}}</ref>
== Версии Юникода ==
Работа по доработке стандарта продолжается. Новые версии выпускаются по мере изменения и пополнения таблиц символов. Параллельно выпускаются новые документы [[ISO]]/IEC 10646.
Первый стандарт выпущен в 1991 году, последний — в 2014, следующий ожидается летом 2015 года<ref>{{cite web | url=http://std.dkuug.dk/JTC1/SC2/WG2/docs/n4566.pdf | title=Unicode Liaison Report to WG2 | author=Unicode Consortium | publisher=ISO/IEC JTC1/SC2/WG2 | date=24 February 2014 | accessdate= 2014-06-15}}</ref>. Стандарты версий 1.0 — 5.0 публиковались, как книги, и имеют [[ISBN]].
Номер версии стандарта составлен из трёх цифр (например, "4.0.1"). Третью цифру меняют при внесении в стандарт небольших изменений, не добавляющих новых символов.
{| class="wikitable"
|-
|+ Версии Юникода
|-
! Номер версии
! Дата публикации
! [[ISBN]] книги
! Издание ISO/IEC 10646
! Количество [[Письменность|письменностей]]
! Количество символов<ref group="A">'''Включая''' символы графические ({{lang-en|graphic}}), управляющие ({{lang-en|control}}) и символы форматирования ({{lang-en|format}}); '''не включая''' символы private-use, noncharacters и сурогаты ({{lang-en|surrogate code points}}).</ref>
! Изменения
|-
| 1.0.0
| Октябрь 1991
| ISBN 0-201-56788-1 (Vol.1)
|
| {{formatnum:24}}
| {{formatnum:7161}}
| Изначально таблицы Юникода содержали символы следующих письменностей: [[Арабское письмо|арабское письмо]], [[Армянское письмо|армянское письмо]], [[Бенгальский язык|бенгальское письмо]], [[Чжуинь|чжуиньское письмо]], [[Кириллица|кириллица]], [[Деванагари|деванагари]], [[Грузинское письмо|грузинское письмо]], [[Греческий алфавит|греческое и коптское письмо]], [[Гуджарати (письмо)|гуджарати]], [[Гурмукхи|гурмукхи]], [[Хангыль|хангыль]], [[Еврейский алфавит|еврейское письмо]], [[Хирагана|хирагана]], [[Каннада (письмо)|каннада]], [[Катакана|Катакана]], [[Лаосское письмо|лаосское письмо]], [[Латинский алфавит|латинское письмо]], [[Малаялам (письмо)|малаялам]], [[Ория (письмо)|ория]], [[Тамильское письмо|тамильское письмо]], [[Телугу (письмо)|телугу]], [[Тайское письмо|тайское письмо]] и [[Тибетское письмо|тибетское письмо]]<ref>{{cite web| title = Unicode Data 1.0.0|url= http://www.unicode.org/Public/reconstructed/1.0.0/UnicodeData.txt| accessdate = 2010-03-16}}</ref>
|-
| 1.0.1
| Июнь 1992
| ISBN 0-201-60845-6 (Vol.2)
|
| {{formatnum:25}}
| {{formatnum:28359}}
| Добавлено {{formatnum:20902}} [[:en:CJK Unified Ideographs|идеограммы китайского, японского и корейского письма]]<ref>
{{cite web
| title = Unicode Data 1.0.1
| url = http://www.unicode.org/Public/reconstructed/1.0.1/UnicodeData.txt
| accessdate = 2010-03-16}}</ref>
|-
| 1.1
| Июнь 1993
|
| ISO/IEC 10646-1:1993
| {{formatnum:24}}
| {{formatnum:34233}}
| Добавлено более {{formatnum:4306}} слогов [[Хангыль|хангыля]], дополнивших уже имеющиеся в таблицах {{formatnum:2350}} символов. Удалены символы [[Тибетское письмо|тибетского письма]]<ref>{{cite web
| title = Unicode Data 1995
| url = http://www.unicode.org/Public/1.1-Update/UnicodeData-1.1.5.txt
| accessdate = 2010-03-16 }}
</ref>
|-
| 2.0
| Июль 1996
| ISBN 0-201-48345-9
| ISO/IEC 10646-1:1993 и Amendments 5, 6, 7
| {{formatnum:25}}
| {{formatnum:38950}}
| Удалены добавленные ранее слоги [[Хангыль|хангыля]], и добавлены {{formatnum:11172}} новых слога хангыля с новыми кодами. Возвращены удалённые ранее символы [[Тибетское письмо|тибетского письма]]; символы получили новые коды и были размещены в разных таблицах. Введён механизм сурогатных ({{lang-en|surrogate}}) символов. Выделено место для плоскостей ({{lang-en|planes}}) 15 и 16<ref>{{cite web
| title = Unicode Data 2.0.14
| url = http://www.unicode.org/Public/2.0-Update/UnicodeData-2.0.14.txt
| accessdate = 2010-03-16}}
</ref>
|-
| 2.1
| Май 1998
|
| ISO/IEC 10646-1:1993, Amendments 5, 6, 7, два символа из Amendment 18
| 25
| {{formatnum:38952}}
| Добавлен [[символ евро]]<ref>{{cite web
| title = Unicode Data 2.1.2
| url = http://www.unicode.org/Public/2.1-Update/UnicodeData-2.1.2.txt
| accessdate = 2010-03-16}}
</ref>
|-
| 3.0
| Сентябрь 1999
| ISBN 0-201-61633-5
| ISO/IEC 10646-1:2000
| {{formatnum:38}}
| {{formatnum:49259}}
| Добавлены символы следующих письменностей: [[Письмо чероки|письмо чероки]], [[Эфиопское письмо|эфиопское письмо]], [[Кхмерское письмо|кхмерское письмо]], [[Монгольские письменности|монгольские письменности]], [[Бирманское письмо|бирманское письмо]], [[Огамическое письмо|огамическое письмо]], [[Руны|руны]], [[Сингальское письмо|сингальское письмо]], [[Сирийское письмо|сирийское письмо]], [[Тана (письмо)|тана]], [[Канадское слоговое письмо|канадское слоговое письмо]] и [[Письмо и|письмо и]], а также символы [[Шрифт Брайля|шрифта Брайля]]<ref>{{cite web
| title = Unicode Data 3.0.0
| url = http://www.unicode.org/Public/3.0-Update/UnicodeData-3.0.0.txt
| accessdate = 2010-03-16}}
</ref>
|-
| 3.1
| Март 2001
|
| ISO/IEC 10646-1:2000
ISO/IEC 10646-2:2001
| {{formatnum:41}}
| {{formatnum:94205}}
| Добавлены символы следующих письменностей: [[Дезеретский алфавит|дезеретское письмо]], [[Готское письмо|готское письмо]] и [[:en:Old Italic alphabet|старое итальянское письмо]], а также символы [[Современная музыкальная нотация|западной]] и [[Византийская музыка|византийской]] музыки, {{formatnum:42711}} [[:en:CJK Unified Ideographs|идеограмм китайского, японского и корейского письма]]<ref>{{cite web
| title =Unicode Data 3.1.0
| url =http://www.unicode.org/Public/3.1-Update/UnicodeData-3.1.0.txt
| accessdate = 2010-03-16 }}
</ref>
|-
| 3.2
| Март 2002
|
| ISO/IEC 10646-1:2000 и Amendment 1
ISO/IEC 10646-2:2001
| {{formatnum:45}}
| {{formatnum:95221}}
| Добавлены символы следующих писбменностей: [[:en:Buhid script|письмо buhid]], [[:en:Hanunó'o script|письмо hanunó'o]], [[Байбайин|байбайин]] и [[Тагбанва (письмо)|письмо тагбанва]]<ref>{{cite web
| title = Unicode Data 3.2.0
| url = http://www.unicode.org/Public/3.2-Update/UnicodeData-3.2.0.txt
| accessdate = 2010-03-16}}
</ref>
|-
| 4.0
| Апрель 2003
| ISBN 0-321-18578-1
| ISO/IEC 10646:2003
| {{formatnum:52}}
| {{formatnum:96447}}
| Добавлены символы следующих письменностей: [[Кипрское письмо|кипрское письмо]], [[:en:Limbu script|письмо лимбу]], [[Линейное письмо Б|линейное письмо Б]], [[Сомалийское письмо|сомалийское письмо]], [[:en:Shavian alphabet|письмо shavian]], [[:en:Tai Nüa language#Writing system|письмо tai le]] и [[Угаритское письмо|угаритское письмо]], а также символы [[Гексаграмма (Ицзин)|гексаграмм]]<ref>{{cite web
| title = Unicode Data 4.0.0
| url = http://www.unicode.org/Public/4.0-Update/UnicodeData-4.0.0.txt
| accessdate = 2010-03-16}}
</ref>
|-
| 4.1
| Март 2005
|
| ISO/IEC 10646:2003 и Amendment 1
| {{formatnum:59}}
| {{formatnum:97720}}
| Добавлены символы следующих письменностей: [[Лонтара|письмо лонтара]], [[Глаголица|глаголица]], [[Кхароштхи|письмо кхароштхи]], [[:en:New Tai Lue alphabet|новое письмо tai lue]], [[Древнеперсидская клинопись|древнеперсидская клинопись]], [[Силхетское нагари|силхетское нагари]] и [[Древнеливийское письмо|древнеливийское письмо]]. Символы [[Коптское письмо|коптского письма]] были отделены от символов [[Греческий алфавит|греческого письма]]. Также добавлены [[Аттическая система счисления|символы старых греческих цифр]] и [[:en:Musical notation#Ancient Greece|музыкальные символы]]<ref>{{cite web
| title = Unicode Data
| url = http://www.unicode.org/Public/4.1.0/ucd/UnicodeData.txt
| accessdate = 2010-03-16}}
</ref>
|-
| 5.0
| Июль 2006
| ISBN 0-321-48091-0
| ISO/IEC 10646:2003, Amendments 1, 2, четыре символа из Amendment 3
| {{formatnum:64}}
| {{formatnum:99089}}
| Добавлены символы следующих письменностей: [[Балийское письмо|балийское письмо]], [[Клинопись|клинопись]], [[Нко (письмо)|письмо нко]], [[Монгольское квадратное письмо|монгольское квадратное письмо]] и [[Финикийское письмо|финикийское письмо]]<ref>{{cite web
| title = Unicode Data 5.0.0
| url = http://www.unicode.org/Public/5.0.0/ucd/UnicodeData.txt
| accessdate = 2010-03-17}}
</ref>
|-
| 5.1
| Апрель 2008
|
| ISO/IEC 10646:2003 и Amendments 1, 2, 3, 4
| {{formatnum:75}}
| {{formatnum:100713}}
| Добавлены символы следующих письменностей: [[Карийское письмо|карийское письмо]], [[Чамская письменность|чамская письменность]], [[:en:Kayah Li script|письмо kayah li]], [[Лепча (письмо)|письмо лепча]], [[Ликийский алфавит|ликийское письмо]], [[Лидийский алфавит|лидийское письмо]], [[Ол-чики|письмо ол-чики]], [[Реджангское письмо|реджангское письмо]], [[Саураштра (письмо)|письмо саураштра]], [[Сунданское письмо|сунданское письмо]] и [[Ваи (письмо)|письмо ваи]]. Добавлены [[Фестский_диск|символы с фестского диска]], символы для фишек игр [[Маджонг|маджонг]] и [[Домино|домино]], [[Заглавная буква эсцет|заглавная буква эсцет (ß)]], а также символы — [[:en:Scribal abbreviation|аббревиатур scribal]], используемых в средневековых [[Рукопись|рукописях]]. Новыми символами дополнен набор символов [[Бирманское письмо|бирманского письма]]<ref>{{cite web
| title = Unicode Data 5.1.0
| url = http://www.unicode.org/Public/5.1.0/ucd/UnicodeData.txt
| accessdate = 2010-03-17 }}
</ref>
|-
| 5.2
| Октябрь 2009
|
| ISO/IEC 10646:2003 и Amendments 1, 2, 3, 4, 5, 6
| {{formatnum:90}}
| {{formatnum:107361}}
| Добавлены символы следующих письменностей: [[Авестийский алфавит|авестийское письмо]], [[Бамум (письменность)|письмо бамум]], [[Египетское иероглифическое письмо|египетское иероглифическое письмо]] (по [[:en:Gardiner's sign list|списку Гардинера]], содержащему {{formatnum:1071}} символ), [[:en:Imperial Aramaic|письмо imperial aramaic]], [[:en:Inscriptional Pahlavi|письмо inscriptional pahlavi]], [[:en:Inscriptional Parthian|письмо inscriptional parthian]], [[Яванское письмо|яванское письмо]], [[Кайтхи|письмо кайтхи]], [[Алфавит Фрейзера|письмо лису]], [[Манипури (письмо)|письмо манипури]], [[Южноаравийское письмо|южноаравийское письмо]], [[Древнетюркское руническое письмо|древнетюркское руническое письмо]], [[Самаритянское письмо|самаритянское письмо]], [[:en:Tai Tham script|письмо tai tham]] и [[:en:Tai Viet script|письмо tai viet]]. Добавлены {{formatnum:4149}} новых [[:en:CJK Unified Ideographs|идеиграмм китайского, японского и корейского письма]] (CJK-C), символы [[Ведийский язык|ведийского письма]], а также расширен набор символов Jamo [[Хангыль|старого хангыля]]<ref>{{cite web
| title = Unicode Data 5.2.0
| url = http://www.unicode.org/Public/5.2.0/ucd/UnicodeData.txt
| accessdate = 2010-03-17}}
</ref>
|-
| 6.0
| Октябрь 2010
|
| ISO/IEC 10646:2010 и [[Символ рупии|символ валюты Индии]]
| {{formatnum:93}}
| {{formatnum:109449}}
| Добавлены символы следующих письменностей: [[Батакское письмо|батакское письмо]], [[Брахми|письмо брахми]], [[:en:Mandaic alphabet|письмо mandaic]]. Добавлены символы [[Игральные карты|игральных карт]], [[Дорожный знак|дорожных знаков]], [[Географическая карта|географических карт]], [[Алхимические символы|алхимии]], [[Эмотикон|emoticon]] и [[Эмодзи|emoji]]. Добавлены {{formatnum:222}} [[:en:CJK Unified Ideographs|идеограммы китайского, японского и корейского письма]] (CJK-D)<ref>{{cite web
| title = Unicode Data 6.0.0
| url = http://www.unicode.org/Public/6.0.0/ucd/UnicodeData.txt
| accessdate = 2010-10-11}}
</ref>
|-
| 6.1
| Январь 2012
|
| ISO/IEC 10646:2012
| {{formatnum:100}}
| {{formatnum:110181}}
| Добавлены символы следующих письменностей: [[:en:Chakma alphabet|письмо chakma]], [[Мероитское письмо|мероитский рукописный шрифт и мероитские иероглифы]], [[Письмо Полларда|письмо мяо]], [[Шарада (письмо)|письмо шарада]], [[:en:Sora Sompeng|письмо sora sompeng]] и [[Такри|письмо такри]]<ref>{{cite web
| title = Unicode Data 6.1.0
| url = http://www.unicode.org/Public/6.1.0/ucd/UnicodeData.txt
| accessdate = 2012-01-31}}
</ref>
|-
| 6.2
| Сентябрь 2012
|
| ISO/IEC 10646:2012 и [[:en:Turkish lira sign|символ турецкой валюты]]
| {{formatnum:100}}
| {{formatnum:110182}}
| Добавлен [[:en:Turkish lira sign|символ турецкой валюты]]<ref>{{cite web
| title = Unicode Data 6.2.0
| url = http://www.unicode.org/Public/6.2.0/ucd/UnicodeData.txt
| accessdate = 2012-09-26}}
</ref>
|-
| 6.3
| Сентябрь 2013
|
| ISO/IEC 10646:2012 и шесть символов
| {{formatnum:100}}
| {{formatnum:110187}}
| Добавлено пять символов для форматирования двунаправленного текста<ref>{{cite web
| title = Unicode Data 6.3.0
| url = http://www.unicode.org/Public/6.3.0/ucd/UnicodeData.txt
| accessdate = 2013-09-30}}
</ref>
|-
| 7.0
| Июнь 2014
|
| ISO/IEC 10646:2012, Amendments 1, 2 и [[Символ рубля|символ рубля]]
| {{formatnum:123}}
| {{formatnum:113021}}
| Добавлены символы следующих письменностей: [[Басса (письмо)|письмо басса]], [[Агванское письмо|агванское письмо]], [[:en:Duployan shorthand|письмо duployan]], [[Эльбасанское письмо|эльбасанское письмо]], [[Грантха|письмо грантха]], [[:en:Khojki|письмо khojki]], [[:en:Khudabadi alphabet|письменность khudawadi]], [[Линейное письмо А|линейное письмо А]], [[:en:Mahajani|письмо mahajani]], [[:en:Manichaean alphabet|письмо manichaean]], [[Кикакуи|письмо кикакуи]], [[Моди (письмо)|письмо моди]], [[:en:Mro script|письмо mro]], [[Набатейское письмо|набатейское письмо]], [[Северноаравийские языки|северноаравийское письмо]], [[Древнепермское письмо|древнепермское письмо]], [[:en:Pahawh Hmong|письмо pahawh hmong]], [[:en:Palmyrene script|письмо palmyrene]], [[:en:Pau Cin Hau|письмо pau cin hau]], [[:en:Psalter Pahlavi|письмо psalter pahlavi]], [[Сиддхаматрика|сиддхаматрика]], [[:en:Tirhuta|письмо tirhuta]], [[Варанг-кшити|варанг-кшити]] и [[:en:Dingbat|орнамент dingbat]]<ref>{{cite web
| title = Unicode Data 7.0.0
| url = http://www.unicode.org/Public/7.0.0/ucd/UnicodeData.txt
| accessdate = 2014-06-15}}
</ref>
|-
|colspan="7" | '''Примечания'''
<references group="A" />
|-
|}
== Кодовое пространство ==
Хотя формы записи UTF-8 и UTF-32 позволяют кодировать до 2<sup>31</sup> ({{formatnum:2147483648}}) кодовых позиций, было принято решение использовать лишь {{formatnum:1112064}} для совместимости с UTF-16. Впрочем, даже и этого на текущий момент более чем достаточно — в версии 6.0 используется чуть менее {{formatnum:110000}} кодовых позиций ({{formatnum:109242}} графических и 273 прочих символов).
Кодовое пространство разбито на 17 ''плоскостей'' ({{lang-en|planes}}) по 2<sup>16</sup> ({{formatnum:65536}}) символов. Нулевая плоскость ({{lang-en|plane 0}}) называется ''базовой'' ({{lang-en|basic}}) и содержит символы наиболее употребительных письменностей. Остальные плоскости — дополнительные ({{lang-en|supplementary}}). Первая плоскость ({{lang-en|plane 1}}) используется, в основном, для исторических письменностей, вторая ({{lang-en|plane 2}}) — для редко используемых иероглифов [[CJK|китайского письма (ККЯ)]], третья ({{lang-en|plane 3}}) зарезервирована для архаичных китайских иероглифов<ref>[http://unicode.org/roadmaps/tip/ Roadmap to the TIP (Tertiary Ideographic Plane)]</ref>. Плоскости 15 и 16 выделены для частного употребления.<ref name='unicode-02' />
Для обозначения символов Unicode используется запись вида «U+''xxxx''» (для кодов 0…FFFF), или «U+''xxxxx''» (для кодов 10000…FFFFF), или «U+''xxxxxx''» (для кодов 100000…10FFFF), где ''xxx'' — [[шестнадцатеричная система счисления|шестнадцатеричные]] цифры. Например, символ «я» (U+044F) имеет код 044F<sub>[[шестнадцатеричная система счисления|16]]</sub> = 1103<sub>[[десятичная система счисления|10]]</sub>.
{| class="wikitable sortable"
|-
! Плоскость !! Название !! Диапазон символов
|-
| Plane 0 || Basic multilingual plane (BMP) || U+0000…U+FFFF
|-
| Plane 1 || Supplementary multilingual plane (SMP) || U+10000…U+1FFFF
|-
| Plane 2 || Supplementary ideographic plane (SIP) || U+20000…U+2FFFF
|-
| Planes 3-13 || Unassigned || U+30000…U+DFFFF
|-
| Plane 14 || Supplementary special-purpose plane (SSP) || U+E0000…U+EFFFF
|-
| Planes 15-16 || Supplementary private use area (S PUA A/B) || U+F0000…U+10FFFF
|-
|}
== Система кодирования ==
Универсальная система кодирования (Юникод) представляет собой набор графических символов и способ их кодирования для [[компьютер]]ной обработки текстовых данных.
Графические символы — это символы, имеющие видимое изображение. Графическим символам противопоставляются управляющие символы и символы форматирования.
Графические символы включают в себя следующие группы:
* буквы, содержащиеся хотя бы в одном из обслуживаемых [[алфавит]]ов;
* цифры;
* знаки пунктуации;
* специальные знаки ([[математика|математические]], технические, [[идеограмма|идеограммы]] и пр.);
* разделители.
Юникод — это система для линейного представления текста. Символы, имеющие дополнительные над- или подстрочные элементы, могут быть представлены в виде построенной по определённым правилам последовательности кодов (составной вариант, composite character) или в виде единого символа (монолитный вариант, precomposed character). На данный момент (2014) считается, что все буквы крупных письменностей в Юникод внесены, и если символ доступен в составном варианте, дублировать его в монолитном виде не нужно.
=== Политика консорциума ===
Консорциум не создаёт нового, а констатирует сложившийся порядок вещей.{{-1|<ref name="emoji">[http://www.unicode.org/faq/emoji_dingbats.html FAQ - Emoji & Dingbats<!-- Заголовок добавлен ботом -->]</ref>}} Например, картинки «[[эмодзи]]» были добавлены потому, что японские операторы мобильной связи широко их использовали. Для этого добавление символа проходит через сложный процесс.{{-1|<ref name="emoji" />}} И, например, [[символ рубля]] прошёл его за три месяца просто потому, что до этого шесть лет широко использовался.
[[товарный знак|Товарные знаки]] кодируют только в порядке исключения. Так, в Юникоде нет флага [[Windows]] или яблока [[Apple]].
Как только символ появился в кодировке, он никогда не сдвинется и не исчезнет. Если же потребуется изменить порядок символов, это делается не переменой позиций, а национальным порядком сортировки. Есть и другие, более тонкие гарантии стабильности — например, не будут меняться таблицы нормализации.{{-1|<ref>[http://www.unicode.org/policies/stability_policy.html Unicode Character Encoding Stability Policy<!-- Заголовок добавлен ботом -->]</ref>}}
=== Объединение и дублирование символов ===
Один и тот же символ может иметь несколько форм; в Юникод эти формы входят одной кодовой позицией:
* если это сложилось исторически. Например, у [[арабское письмо|арабских букв]] есть четыре формы: обособленная, в начале, в середине и в конце;<ref>Впоследствии конкретным формам арабских букв отвели отдельные позиции. Но всё равно рекомендуется писать по-арабски «общими» вариантами букв.</ref>
* либо если в одном языке принята одна форма, а в другом — другая. [[Болгарская кириллица (типографика)|Болгарская кириллица]] отличается от русской, а китайские иероглифы — от японских.
С другой стороны, если исторически в шрифтах были две разных кодовых позиции, они остаются разными и в Юникоде. Строчная греческая [[сигма (буква)|сигма]] имеет две формы, и они — разные позиции. [[Å (латиница)|А с кружком]] и знак [[ангстрем]]а, греческое [[мю]] и латинское «[[микро-]]» — разные символы.
Конечно же, похожие символы в неродственных письменностях ставятся в разные кодовые позиции. Например, буква «А» в [[латиница|латинице]], [[кириллица|кириллице]], [[греческий алфавит|греческом]] и [[письмо чероки|чероки]] — разные символы.
Крайне редко один и тот же символ ставится в две разные кодовые позиции для упрощения обработки текста. [[Штрих (математика)|Математический штрих]] и такой же штрих для индикации [[мягкий звук|мягкости звуков]] — разные символы, второй считается буквой.
== Модифицирующие символы ==
[[Файл:Diacritic-j.png|right|thumb|Представление символа «Й» (U+0419) в виде базового символа «И» (U+0418) и модифицирующего символа « ̆» (U+0306)]]
Графические символы в Юникоде подразделяются на протяжённые и непротяжённые (бесширинные). Непротяжённые символы при отображении не занимают места в [[строка|строке]]. К ним относятся, в частности, знаки ударения и прочие [[диакритические знаки]]. Как протяжённые, так и непротяжённые символы имеют собственные коды. Протяжённые символы иначе называются базовыми ({{lang-en|base characters}}), а непротяжённые — модифицирующими ({{lang-en|combining characters}}); причём последние не могут встречаться самостоятельно. Например, символ «á» может быть представлен как последовательность базового символа «a» (U+0061) и модифицирующего символа « ́» (U+0301) или как монолитный символ «á» (U+00C1).
Особый тип модифицирующих символов — селекторы варианта начертания ({{lang-en|variation selectors}}). Они действуют только на те символы, для которых такие варианты определены. В версии 5.0 варианты начертания определены для ряда математических символов, для символов традиционного [[монгольский алфавит|монгольского алфавита]] и для символов [[Монгольское квадратное письмо|монгольского квадратного письма]].
== Алгоритмы нормализации ==
Поскольку одни и те же символы можно представить различными кодами сравнение строк байт за байтом становится невозможным. Алгоритмы нормализации ({{lang-en|normalization forms}}) решают эту проблему, выполняя приведение текста к определённому стандартному виду. Приведение осуществляется путём замены символов на эквивалентные с использованием таблиц и правил. «Декомпозицией» называется замена (разложение) одного символа на несколько составляющих символов, а «композицией», наоборот, — замена (соединение) нескольких составляющих символов на один символ.
В стандарте Юникода определены 4 алгоритма нормализации текста: NFD, NFC, NFKD и NFKC.
=== NFD ===
NFD, {{lang-en|'''n'''ormalization '''f'''orm '''D'''}} («D» от {{lang-en|'''d'''ecomposition}}), форма нормализации D — каноническая декомпозиция — алгоритм, согласно которому выполняется рекурсивная замена монолитных символов ({{lang-en|precomposed characters}}) на несколько составных ({{lang-en|composite characters}}) в соответствии с таблицами декомпозиции.
Примеры:
{| style="text-align:center"
|
{| class="wikitable" style="text-align:center"
| <big>Å</big>
|-
| <small>U+00C5</small>
|}
| colspan="2" | →
|
{| class="wikitable"
| <big>A</big>
|-
| <small>U+0041</small>
|}
|
{| class="wikitable"
| <big> ̊</big>
|-
| <small>U+030A</small>
|}
|}
{| style="text-align:center"
|
{| class="wikitable" style="text-align:center"
| <big>ṩ</big>
|-
| <small>U+1E69</small>
|}
| colspan="2" | →
|
{| class="wikitable"
| <big>s</big>
|-
| <small>U+0073</small>
|}
|
{| class="wikitable"
| <big> ̣</big>
|-
| <small>U+0323</small>
|}
|
{| class="wikitable"
| <big> ̇</big>
|-
| <small>U+0307</small>
|}
|}
{| style="text-align:center"
|
{| class="wikitable" style="text-align:center"
| colspan="2" | <big>ḍ̇</big>
|-
| <small>U+1E0B</small> || <small>U+0323</small>
|}
| colspan="2" | →
|
{| class="wikitable"
| <big>d</big>
|-
| <small>U+0064</small>
|}
|
{| class="wikitable"
| <big> ̣</big>
|-
| <small>U+0323</small>
|}
|
{| class="wikitable"
| <big> ̇</big>
|-
| <small>U+0307</small>
|}
|}
{| style="text-align:center"
|
{| class="wikitable" style="text-align:center"
| colspan="3" | <big>q̣̇</big>
|-
| <small>U+0071</small> || <small>U+0307</small> || <small>U+0323</small>
|}
| colspan="2" | →
|
{| class="wikitable"
| <big>q</big>
|-
| <small>U+0071</small>
|}
|
{| class="wikitable"
| <big> ̣</big>
|-
| <small>U+0323</small>
|}
|
{| class="wikitable"
| <big> ̇</big>
|-
| <small>U+0307</small>
|}
|}
=== NFC ===
NFC, {{lang-en|'''n'''ormalization '''f'''orm '''C'''}} («C» от {{lang-en|'''c'''omposition}}), форма нормализации C — алгоритм, согласно которому последовательно выполняются каноническая декомпозиция и каноническая композиция.
Сначала каноническая декомпозиция (алгоритм NFD) приводит текст к форме D. Затем каноническая композиция — операция, обратная NFD, обрабатывает текст от начала к концу с учётом следующих правил:
* символ <tt>S</tt> считается ''начальным'', если имеет класс модификации равный нулю <!-- combining class of zero --> согласно таблице символов Юникода;
* в любой последовательности символов, начинающейся с символа <tt>S</tt>, символ <tt>C</tt> блокируется от <tt>S</tt>, только если между <tt>S</tt> и <tt>C</tt> есть какой-либо символ <tt>B</tt>, который либо является начальным, либо имеет одинаковый или больший класс модификации, чем <tt>C</tt>. Это правило распространяется только на строки, прошедшие каноническую декомпозицию;
* символ считается ''первичным'' композитом, если имеет каноническую декомпозицию в таблице символов Юникода (или каноническую декомпозицию для [[Хангыль|хангыля]] и он не входит в [http://www.unicode.org/unicode/reports/tr15/#Primary_Exclusion_List_Table список исключений]);
* символ <tt>X</tt> может быть первично совмещён с символом <tt>Y</tt>, если и только если существует первичный композит <tt>Z</tt>, канонически эквивалентный последовательности <<tt>X</tt>, <tt>Y</tt>>;
* если очередной символ <tt>C</tt> не блокируется последним встреченным начальным базовым символом <tt>L</tt> и он может быть успешно первично совмещён с ним, то <tt>L</tt> заменяется на композит <tt>L-C</tt>, а <tt>C</tt> удаляется.
Пример:
{| style="text-align:center"
|
{| class="wikitable" style="text-align:center"
| <big>o</big>
|-
| <small>U+006F</small>
|}
|
{| class="wikitable" style="text-align:center"
| <big> ̂</big>
|-
| <small>U+0302</small>
|}
| colspan="2" | →
|
{| class="wikitable"
| <big>ô</big>
|-
| <small>U+00F4</small>
|}
|}
=== NFKD ===
NFKD, {{lang-en|'''n'''ormalization '''f'''orm '''KD'''}}, форма нормализации KD — совместимая декомпозиция — алгоритм, согласно которому последовательно выполняются каниническая декомпозиция и замены символов текста по таблицам совместимой декомпозиции. Таблицы совместимой декомпозиции предусматривают замену на почти эквивалентные символов<ref>[http://habrahabr.ru/post/45489/ Нормализация Unicode]</ref>:
* похожих на буквы (ℍ и ℌ);
* обведённых кружками (①);
* с изменёнными размерами (カ и カ);
* повёрнутых (︷ и {);
* степеней (⁹ и ₉);
* дробей (¼);
* других (™).
Примеры:
{| style="text-align:center;"
|
{| class="wikitable" style="text-align:center;"
| <big>ℍ</big>
|-
| <small>U+210d</small>
|}
| colspan="2" | →
|
{| class="wikitable" style="text-align:center;"
| <big>H</big>
|-
| <small>U+0048</small>
|}
|}
{| style="text-align:center;"
|
{| class="wikitable" style="text-align:center;"
| <big>①</big>
|-
| <small>U+2460</small>
|}
| colspan="2" | →
|
{| class="wikitable" style="text-align:center;"
| <big>1</big>
|-
| <small>U+0031</small>
|}
|}
{|
|
{| class="wikitable" style="text-align:center;"
| <big>カ</big>
|-
| <small>U+FF76</small>
|}
| colspan="2" | →
|
{| class="wikitable" style="text-align:center;"
| <big>カ</big>
|-
| <small>U+30AB</small>
|}
|}
{|
|
{| class="wikitable" style="text-align:center;"
| <big>︷</big>
|-
| <small>U+FE37</small>
|}
| colspan="2" | →
|
{| class="wikitable" style="text-align:center;"
| <big>{</big>
|-
| <small>U+007B</small>
|}
|}
{|
|
{| class="wikitable" style="text-align:center;"
| <big>⁹</big>
|-
| <small>U+2079</small>
|}
| colspan="2" | →
|
{| class="wikitable" style="text-align:center;"
| <big>9</big>
|-
| <small>U+0039</small>
|}
|}
{|
|
{| class="wikitable" style="text-align:center;"
| <big>¼</big>
|-
| <small>U+00BC</small>
|}
| colspan="2" | →
|
{| class="wikitable" style="text-align:center;"
| <big>1</big> || <big> ⁄ </big> || <big>4</big>
|-
| <small>U+0031</small> || <small>U+2044</small> || <small>U+0034</small>
|}
|}
{|
|
{| class="wikitable" style="text-align:center;"
| <big>™</big>
|-
| <small>U+2122</small>
|}
| colspan="2" | →
|
{| class="wikitable" style="text-align:center;"
| <big>T</big> || <big>M</big>
|-
| <small>U+0054</small> || <small>U+004D</small>
|}
|}
=== NFKC ===
NFKC, {{lang-en|'''n'''ormalization '''f'''orm '''KC'''}}, форма нормализации KC — алгоритм, согласно которому последовательно выполняются совместимая декомпозиция (алгоритм NFKD) и каноническая композиция (алгоритм NFC).
=== Примеры ===
{| class="standard"
!Исходный текст||NFD||NFC||NFKD||NFKC
|-
| <!-- fi -->
{| class="wikitable" style="text-align:center;"
| <big>fi</big>
|-
| <small>U+FB01</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>fi</big>
|-
| <small>U+FB01</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>fi</big>
|-
| <small>U+FB01</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>fi</big>
|-
| <small>U+FB01</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>f</big> || <big>i</big>
|-
| <small>U+0066</small> || <small>U+0069</small>
|}
|-
| <!-- 2^5 -->
{| class="wikitable" style="text-align:center;"
| <big>2</big> || <big>⁵</big>
|-
| <small>U+0032</small> || <small>U+2075</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>2</big> || <big>⁵</big>
|-
| <small>U+0032</small> || <small>U+2075</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>2</big> || <big>⁵</big>
|-
| <small>U+0032</small> || <small>U+2075</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>2</big> || <big>5</big>
|-
| <small>U+0032</small> || <small>U+0035</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>2</big> || <big>5</big>
|-
| <small>U+0032</small> || <small>U+0035</small>
|}
|-
| <!-- "s" (looks like "f") with two dots -->
{| class="wikitable" style="text-align:center;"
| colspan="2" | <big>ẛ̣</big>
|-
| <small>U+1E9B</small> || <small>U+0323</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>ſ</big> || <big>̣</big> || <big>̇</big>
|-
| <small>U+017F</small> || <small>U+0323</small> || <small>U+0307</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>ẛ</big> || <big>̣</big>
|-
| <small>U+1E9B</small> || <small>U+0323</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>s</big> || <big>̣</big> || <big>̇</big>
|-
| <small>U+0073</small> || <small>U+0323</small> || <small>U+0307</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>ṩ</big>
|-
| <small>U+1E69</small>
|}
|-
| <!-- "й" -->
{| class="wikitable" style="text-align:center;"
| <big>й</big>
|-
| <small>U+0439</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>и</big> || <big> ̆</big>
|-
| <small>U+0438</small> || <small>U+0306</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>й</big>
|-
| <small>U+0439</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>и</big> || <big> ̆</big>
|-
| <small>U+0438</small> || <small>U+0306</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>й</big>
|-
| <small>U+0439</small>
|}
|-
| <!-- "ё" -->
{| class="wikitable" style="text-align:center;"
| <big>ё</big>
|-
| <small>U+0451</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>е</big> || <big>̈</big>
|-
| <small>U+0435</small> || <small>U+0308</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>ё</big>
|-
| <small>U+0451</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>е</big> || <big>̈</big>
|-
| <small>U+0435</small> || <small>U+0308</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>ё</big>
|-
| <small>U+0451</small>
|}
|-
| <!-- "А" -->
{| class="wikitable" style="text-align:center;"
| <big>А</big>
|-
| <small>U+0410</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>А</big>
|-
| <small>U+0410</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>А</big>
|-
| <small>U+0410</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>А</big>
|-
| <small>U+0410</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>А</big>
|-
| <small>U+0410</small>
|}
|-
| <!-- "が" -->
{| class="wikitable" style="text-align:center;"
| <big>が</big>
|-
| <small>U+304C</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>か</big> || <big>゙</big>
|-
| <small>U+304B</small> || <small>U+3099</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>が</big>
|-
| <small>U+304C</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>か</big> || <big>゙</big>
|-
| <small>U+304B</small> || <small>U+3099</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>が</big>
|-
| <small>U+304C</small>
|}
|-
| <!-- "VIII" -->
{| class="wikitable" style="text-align:center;"
| <big>Ⅷ</big>
|-
| <small>U+2167</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>Ⅷ</big>
|-
| <small>U+2167</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>Ⅷ</big>
|-
| <small>U+2167</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>V</big> || <big>I</big> || <big>I</big> || <big>I</big>
|-
| <small>U+0049</small> || <small>U+0049</small> || <small>U+0049</small> || <small>U+0049</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>V</big> || <big>I</big> || <big>I</big> || <big>I</big>
|-
| <small>U+0049</small> || <small>U+0049</small> || <small>U+0049</small> || <small>U+0049</small>
|}
|-
| <!-- "ç" -->
{| class="wikitable" style="text-align:center;"
| <big>ç</big>
|-
| <small>U+00E7</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>c</big> || <big>̧</big>
|-
| <small>U+0063</small> || <small>U+0327</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>ç</big>
|-
| <small>U+00E7</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>c</big> || <big>̧</big>
|-
| <small>U+0063</small> || <small>U+0327</small>
|}
|
{| class="wikitable" style="text-align:center;"
| <big>ç</big>
|-
| <small>U+00E7</small>
|}
|-
|}
== Двунаправленное письмо ==
Стандарт Юникод поддерживает письменности языков как с направлением написания слева направо ({{lang-en|left-to-right, LTR}}), так и с написанием справа налево ({{lang-en|right-to-left, RTL}}) — например, [[арабское письмо|арабское]] и [[еврейский алфавит|еврейское]] письмо. В обоих случаях символы хранятся в «естественном» порядке; их отображение с учётом нужного направления письма обеспечивается приложением.
Кроме того, Юникод поддерживает комбинированные тексты, сочетающие фрагменты с разным направлением письма. Данная возможность называется ''двунаправленность'' ({{lang-en|bidirectional text, BiDi}}). Некоторые упрощённые обработчики текста (например, в сотовых телефонах) могут поддерживать Юникод, но не иметь поддержки двунаправленности. Все символы Юникода поделены на несколько категорий: пишущиеся слева направо, пишущиеся справа налево, и пишущиеся в любом направлении. Символы последней категории (в основном это [[знаки пунктуации]]) при отображении принимают направление окружающего их текста.
== Представленные символы ==
{{Main|Символы, представленные в Юникоде}}
[[Файл:Roadmap to Unicode BMP.svg|right|273px|thumb|Схема базовой плоскости Unicode, см. [[Символы, представленные в Юникоде#Базовая многоязыковая плоскость|описание]]]]
Юникод включает практически все современные [[письменность|письменности]], в том числе:
{{columns-list|2|
* [[арабское письмо|арабскую]],
* [[армянское письмо|армянскую]],
* [[бенгальское письмо|бенгальскую]],
* [[Бирманское письмо|бирманскую]],
* [[Глаголица|глаголицу]],
* [[Греческий алфавит|греческую]],
* [[грузинское письмо|грузинскую]],
* [[деванагари]],
* [[еврейский алфавит|еврейскую]],
* [[Кириллица|кириллицу]],
* [[китайское письмо|китайскую]] (китайские иероглифы активно используются в [[японский язык|японском языке]], а также достаточно редко в [[корейский язык|корейском]]),
* [[коптское письмо|коптскую]],
* [[Кхмерское письмо|кхмерскую]],
* [[Латинский алфавит|латинскую]],
* [[Тамильское письмо|тамильскую]],
* [[Хангыль|корейскую (хангыль)]],
* [[письмо чероки|чероки]],
* [[Эфиопское письмо|эфиопскую]],
* [[японское письмо|японскую]] (которая включает в себя кроме [[кандзи|китайских иероглифов]] ещё и [[кана|слоговую азбуку]]),
}}
и другие.
С академическими целями добавлены многие исторические письменности, в том числе: [[руны|германские руны]], [[Древнетюркское руническое письмо|древнетюркские руны]], [[древнегреческий язык|древнегреческая]], [[египетские иероглифы]], [[клинопись]], [[письменность майя]], [[этрусский алфавит]].
В Юникоде представлен широкий набор [[таблица математических символов|математических]] и [[музыка]]льных символов, а также [[пиктограмма|пиктограмм]].
В Юникод принципиально не включаются [[государственный флаг|государственные флаги]], [[логотип]]ы компаний и продуктов, хотя они и встречаются в шрифтах (например, логотип [[Apple]] в кодировке [[MacRoman]] (0xF0) или логотип [[Microsoft Windows|Windows]] в шрифте Wingdings (0xFF)). В юникодовских шрифтах логотипы должны размещаться только в области пользовательских символов.
== ISO/IEC 10646 ==
Консорциум Юникода работает в тесной связи с рабочей группой ISO/IEC/JTC1/SC2/WG2, которая занимается разработкой международного стандарта 10646 ([[ISO]]/[[IEC]] 10646). Между стандартом Юникода и ISO/IEC 10646 установлена синхронизация, хотя каждый стандарт использует свою терминологию и систему документации.
Сотрудничество Консорциума Юникода с Международной организацией по стандартизации ({{lang-en|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 значит ''универсальный многооктетный'' (многобайтовый) ''кодированный набор символов'' ({{lang-en|universal multiple-octet coded character set}}). UCS-2 можно считать подмножеством UTF-16 (UTF-16 без суррогатных пар), а UCS-4 является синонимом для UTF-32.
== Способы представления ==
Юникод имеет несколько форм представления ({{lang-en|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 ([http://tools.ietf.org/html/rfc4042 RFC 4042]).
В [[Microsoft]] [[Windows NT]] и основанных на ней системах [[Windows 2000]] и [[Windows XP]] в основном [[юникод в операционных системах Microsoft|используется]] форма UTF-16LE. В [[UNIX]]-подобных [[Операционная система|операционных системах]] [[GNU/Linux]], [[BSD]] и [[Mac OS X]] принята форма UTF-8 для файлов и UTF-32 или UTF-8 для обработки символов в [[оперативная память|оперативной памяти]].
[[Punycode]] — другая форма кодирования последовательностей Unicode-символов в так называемые ACE-последовательности, которые состоят только из алфавитно-цифровых символов, как это разрешено в доменных именах.
=== UTF-8 ===
{{Основная статья|UTF-8}}
UTF-8 — представление Юникода, обеспечивающее наилучшую совместимость со старыми системами, использовавшими 8-битные символы. Текст, состоящий только из символов с номером меньше 128, при записи в UTF-8 превращается в обычный текст [[ASCII]]. И наоборот, в тексте UTF-8 любой [[байт]] со значением меньше 128 изображает символ ASCII с тем же кодом. Остальные символы Юникода изображаются последовательностями длиной от 2 до 6 байт (на деле, только до 4 байт, поскольку в Юникоде нет символов с кодом больше 10FFFF, и вводить их в будущем не планируется), в которых первый байт всегда имеет вид <code>11xxxxxx</code>, а остальные — <code>10xxxxxx</code>. В UTF-8 не используются суррогатные пары, 4-x байтов достаточно для записи любого символа юникода.
Формат UTF-8 был изобретён [[2 сентября]] [[1992 год]]а [[Томпсон, Кен|Кеном Томпсоном]] и [[Пайк, Роб|Робом Пайком]] и реализован в [[Plan 9]]<ref>http://www.cl.cam.ac.uk/~mgk25/ucs/utf-8-history.txt {{ref-en}}</ref>. Сейчас стандарт UTF-8 официально закреплён в документах RFC 3629 и ISO/IEC 10646 Annex D.
Символы UTF-8 получаются из Unicode [http://www.linuxdoc.ru/manpages/man7/utf-8.7.html следующим образом]:
<pre>Unicode UTF-8:
0x00000000 — 0x0000007F: 0xxxxxxx
0x00000080 — 0x000007FF: 110xxxxx 10xxxxxx
0x00000800 — 0x0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx
0x00010000 — 0x001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
</pre>
Теоретически возможны, но не включены в стандарт также:
<pre>0x00200000 — 0x03FFFFFF: 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
0x04000000 — 0x7FFFFFFF: 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
</pre>
Несмотря на то, что UTF-8 позволяет указать один и тот же символ несколькими способами, только наиболее короткий из них правильный. Остальные формы должны отвергаться по соображениям безопасности.
=== Порядок байтов ===
В потоке данных UTF-16 младший байт может записываться либо перед старшим ({{lang-en|UTF-16 little-endian}}), либо после старшего ({{lang-en|UTF-16 big-endian}}). Аналогично существует два варианта четырёхбайтной кодировки — UTF-32LE и UTF-32BE.
Для определения формата представления Юникода в начало текстового файла записывается
[[Магическое число (программирование)#Сигнатура данных|сигнатура]] — символ U+FEFF (неразрывный пробел с нулевой шириной), также именуемый ''[[Маркер последовательности байтов|маркером последовательности байтов]]'' ({{lang-en|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 ([http://unicode.org/faq/utf_bom.html#gen6 unicode.org]).
=== Юникод и традиционные кодировки ===
Внедрение Юникода привело к изменению подхода к традиционным 8-битным кодировкам. Если раньше кодировка задавалась шрифтом, то теперь она задаётся таблицей соответствия между данной кодировкой и Юникодом. Фактически 8-битные кодировки превратились в форму представления некоторого подмножества Юникода. Это намного упростило создание программ, которые должны работать с множеством разных кодировок: теперь, чтобы добавить поддержку ещё одной кодировки, надо всего лишь добавить ещё одну таблицу перекодировки в Юникод.
Кроме того, многие форматы данных позволяют вставлять любые символы Юникода, даже если документ записан в старой 8-битной кодировке. Например, в HTML можно использовать [[Мнемоники в HTML|коды с амперсандом]].
=== Реализации ===
Большинство современных операционных систем в той или иной степени обеспечивают поддержку Юникода.
В операционных системах семейства [[Windows NT]] для внутреннего представления имён файлов и других системных строк используется двухбайтовая кодировка UTF-16LE. Системные вызовы, принимающие строковые параметры, существуют в однобайтном и двухбайтном вариантах. Подробнее см. в статье [[Юникод в операционных системах Microsoft]].
[[UNIX]]-подобные операционные системы, в том числе [[GNU/Linux]], [[BSD]], [[Mac OS X]], используют для представления Юникода кодировку UTF-8. Большинство программ могут работать с UTF-8 как с традиционными однобайтными кодировками, не обращая внимания на то, что символ представляется как несколько последовательных байт. Для работы с отдельными символами строки обычно перекодируются в UCS-4, так что каждому символу соответствует [[машинное слово]].
Одной из первых успешных коммерческих реализаций Юникода стала среда программирования [[Java]]. В ней принципиально отказались от 8-битного представления символов в пользу 16-битного. Это решение увеличивало расход памяти, но позволило вернуть в программирование важную абстракцию: произвольный одиночный символ (тип <code>char</code>). В частности, программист мог работать со строкой, как с простым массивом. К сожалению, успех не был окончательным, Юникод перерос ограничение в 16 бит и к версии J2SE 5.0 произвольный символ снова стал занимать переменное число единиц памяти — один <code>char</code> или два (см. [[UTF-16|суррогатная пара]]).
Сейчас большинство языков программирования поддерживают строки Юникода, хотя их представление может различаться в зависимости от реализации.
== Методы ввода ==
Поскольку ни одна [[раскладка клавиатуры]] не может позволить вводить все символы Юникода одновременно, от [[операционная система|операционных систем]] и [[прикладное программное обеспечение|прикладных программ]] требуется поддержка альтернативных методов ввода произвольных символов Юникода.
=== [[Microsoft Windows]] ===
{{Main|Юникод в операционных системах Microsoft}}
Хотя начиная с [[Windows 2000]], служебная программа «Таблица символов» (charmap.exe) поддерживает юникодные символы и позволяет копировать их в [[буфер обмена]], но эта поддержка ограничена только базовой плоскостью (коды символов U+0000-U+FFFF). Символы с кодами от U+10000 «Таблица символов» не отображает.
Похожая таблица есть, например, в [[Microsoft Word]].
Иногда можно набрать [[Шестнадцатеричная система счисления|шестнадцатеричный]] код, нажать [[Alt (клавиша)|Alt]]+X, и код будет заменён на соответствующий символ, например, в [[WordPad]], Microsoft Word. В редакторах Alt+X выполняет и обратное преобразование.
Во многих программах MS Windows, чтобы получить символ Unicode, нужно при нажатой клавише Alt набрать десятичное значение кода символа на цифровой клавиатуре. Например, полезными при наборе кириллических текстов будут комбинации Alt+0171 («), Alt+0187 (») и Alt+0769 ([[знак ударения]]). Интересны также комбинации 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: при зажатых клавишах {{key|Ctrl|Shift}} ввести шестнадцатеричный код (начиная с некоторой версии GTK+ ввод кода нужно предварить нажатием клавиши ''«U»''). Вводимый шестнадцатеричный код может иметь до 32 бит в длину, позволяя вводить любые символы Юникода без использования суррогатных пар.
Все приложения [[X Window System|X Window]], включая GNOME и [[KDE]], поддерживают ввод при помощи клавиши {{Key|[[Compose]]}}. Для клавиатур, на которых нет отдельной клавиши [[Compose]], для этой цели можно назначить любую клавишу — например, {{Key|[[Caps Lock]]}}.
Консоль GNU/Linux также допускает ввод символа Юникода по его коду — для этого десятичный код символа нужно ввести цифрами расширенного блока клавиатуры при зажатой клавише {{Key|Alt}}. Можно вводить символы и по их шестнадцатеричному коду: для этого нужно зажать клавишу {{key|AltGr}}, и для ввода цифр A—F использовать клавиши расширенного блока клавиатуры от {{Key|NumLock}} до {{Key|Enter}} (по часовой стрелке). Поддерживается также и ввод в соответствии с ISO 14755. Для того чтобы перечисленные способы могли работать, нужно включить в консоли режим Юникода вызовом <tt>unicode_start</tt>(1) и выбрать подходящий шрифт вызовом <tt>setfont</tt>(8).
[[Mozilla Firefox]] для Linux поддерживает ввод символов по ISO 14755.
== Проблемы Юникода ==
В Юникоде английское «a» и польское «a» — один и тот же символ. Точно так же одним символом (но отличающимся от «a» латинского) считаются русское «а» и сербское «а». Такой принцип кодирования не универсален; по-видимому, решения «на все случаи жизни» вообще не может существовать.
* Тексты на [[китайский язык|китайском]], [[корейский язык|корейском]] и [[японский язык|японском]] языках имеют традиционное написание сверху вниз, начиная с правого верхнего угла. Переключение горизонтального и вертикального написания для этих языков не предусмотрено в Юникоде — это должно осуществляться средствами [[язык разметки|языков разметки]] или внутренними механизмами [[текстовый процессор|текстовых процессоров]].
* Юникод предусматривает возможность разных начертаний одного и того же символа в зависимости от языка. Так, [[китайское письмо|китайские иероглифы]] могут иметь разные начертания в китайском, японском ([[кандзи]]) и корейском ([[ханча]]), но при этом в Юникоде обозначаться одним и тем же символом (так называемая CJK-унификация), хотя упрощённые и полные иероглифы всё же имеют разные коды. Часто возникают накладки, когда, например, японский текст выглядит «по-китайски». Аналогично, [[русский язык|русский]] и [[сербский язык]]и используют разное начертание курсивных букв ''п'' и ''т'' (в сербском они выглядят как <span style="text-decoration: overline; font-style: italic">и</span> и <span style="text-decoration: overline; font-style: italic">ш</span>, см. [[сербский курсив]]). Поэтому нужно следить, чтобы текст всегда был правильно помечен как относящийся к тому или другому языку.
* Перевод из строчных букв в заглавные тоже зависит от языка. Например: в [[турецкий язык|турецком]] существуют буквы [[i без точки|İi и Iı]] — таким образом, турецкие правила изменения регистра конфликтуют с [[английский язык|английскими]], которые предписывают «i» переводить в «I». Подобные проблемы есть и в других языках — например, в канадском диалекте французского языка регистр переводится немного не так, как во Франции.<ref>[http://www.transl-gunsmoker.ru/2008/11/unicode.html Регистр в Unicode — это непросто<!-- Заголовок добавлен ботом -->]</ref>
* Даже с [[арабские цифры|арабскими цифрами]] есть определённые типографские тонкости: цифры бывают «прописными» и «[[минускульные цифры|строчными]]», пропорциональными и [[моноширинный шрифт|моноширинными]]<ref>В большинстве шрифтов для ПК реализованы «прописные» (маюскульные) моноширинные цифры.</ref> — для Юникода разницы между ними нет. Подобные нюансы остаются за программным обеспечением.
Некоторые недостатки связаны не с самим Юникодом, а с возможностями обработчиков текста.
* Файлы неанглийского текста в Юникоде всегда занимают больше места, так как один символ кодируется не одним байтом, как в различных национальных кодировках, а последовательностью байтов (исключение составляет UTF-8 для языков, алфавит которых укладывается в ASCII, а также наличие в тексте символов двух и более языков, алфавит которых ''не'' укладывается в ASCII<ref>В некоторых случаях документ (не простой текст) в Юникоде может занимать существенно меньше места, чем документ в однобайтовой кодировке. Например, если некая веб-страница содержит примерно поровну русского и греческого текста, то в однобайтовой кодировке придётся либо русские, либо греческие буквы записывать, используя возможности формата документов, в виде кодов с амперсандом, которые занимают 6—7 байт на символ (при использовании десятичных кодов), то есть в среднем на букву придётся 3,5—4 байта, в то время как UTF-8 занимает только 2 байта на греческую или русскую букву.</ref>). Файл шрифта, необходимый для отображения всех символов таблицы Юникод, занимает сравнительно много места в памяти и требует бо́льших вычислительных ресурсов, чем шрифт только одного национального языка пользователя<ref>Один из файлов шрифтов Arial Unicode имеет размер 24 мегабайта; существует Times New Roman размером 120 мегабайт, он содержит количество символов, близкое к 65536.</ref>. С увеличением мощности компьютерных систем и удешевлением памяти и дискового пространства эта проблема становится всё менее существенной; тем не менее, она остаётся и в ближайшем будущем останется актуальной для портативных устройств, например, для мобильного телефона<ref>Даже для самого современного и дорогого мобильного телефона затруднительно выделить 120 Мбайт памяти для полного Юникод-шрифта. На практике использование полных шрифтов требуется редко.</ref>.
* Хотя поддержка Юникода реализована в наиболее распространённых операционных системах, до сих пор не всё прикладное программное обеспечение поддерживает корректную работу с ним. В частности, не всегда обрабатываются метки порядка байтов ([[Byte order mark|BOM]]) и плохо поддерживаются диакритические символы. Проблема является временной и есть следствие сравнительной новизны стандартов Юникода (в сравнении с однобайтовыми национальными кодировками).
* Производительность всех программ обработки строк (в том числе и сортировок в БД) снижается при использовании Юникода вместо однобайтовых кодировок.
* [[Философия UNIX]] (перенаправление ввода-вывода из одной программы в другую) неявно подразумевает, что минимальная единица ввода-вывода — [[байт]] — совпадает с одним символом текста. Поэтому UNIX-подобные ОС перешли на Unicode (UTF-8) относительно поздно.
** По причине побайтовой обработки строк, популярная в [[Веб-разработка|веб-разработке]] [[СУБД]] [[MySQL]] выдаёт некорректные результаты при обработке [[регулярки|регулярных выражений]] на Юникод.<ref>[http://dev.mysql.com/doc/refman/5.7/en/regexp.html «The REGEXP and RLIKE operators work in byte-wise fashion, so they are not multi-byte safe and may produce unexpected results with multi-byte character sets.»]</ref> При необходимости таких операций приходится переходить на однобайтовые кодировки.
Первоначальная версия Юникода предполагала наличие большого количества готовых символов, в последующем было отдано предпочтение сочетанию букв с диакритическими модифицирующими знаками ({{lang-en|combining diacritics}}). Например, русские буквы Ё (U+0401) и Й (U+0419) существуют в виде монолитных символов, хотя могут быть представлены и набором базового символа с последующим [[диакритический знак|диакритическим знаком]], то есть в составной форме ({{lang-en|decomposed}}): Е+ ̈ (U+0415 U+0308), И+ ̆ (U+0418 U+0306). В то же время множество символов из языков с [[алфавиты на основе кириллицы|алфавитами на основе кириллицы]] не имеют монолитных форм.
Наконец, некоторые редкие системы письма всё ещё не представлены должным образом в Юникоде. Изображение «длинных» надстрочных символов, простирающихся над несколькими буквами, как, например, в [[церковнославянский язык|церковнославянском языке]], пока не реализовано.
== «Юникод» или «Уникод»? ==
«Unicode» — одновременно и имя собственное (или часть имени, например, Unicode Consortium), и имя нарицательное, происходящее из английского языка.
На первый взгляд предпочтительнее использовать написание «Уникод». В [[Русский язык|русском языке]] уже есть [[Морфема|морфемы]] «уни-» (слова с латинским элементом «uni-» традиционно переводились и писались через «уни-»: универсальный, униполярный, унификация, униформа) и «код». Напротив, торговые марки, заимствованные из [[Английский язык|английского языка]], обычно передаются посредством практической транскрипции, в которой деэтимологизированное сочетание букв «uni-» записывается в виде «юни-» («[[Юнилевер]]», «[[UNIX|Юникс]]» и т. п.), то есть точно так же, как в случае с побуквенными сокращениями, вроде [[UNICEF]] «United Nations International Children’s Emergency Fund» — [[ЮНИСЕФ]].
Написание «Юникод» уже твёрдо вошло в русскоязычные тексты. В [[Википедия|Википедии]] используется более распространённый вариант. В [[MS Windows]] используется вариант «Юникод».
На сайте Консорциума есть специальная страница, где рассматриваются проблемы передачи слова «Unicode» в различных языках и системах письма. Для русской кириллицы указан вариант «Юникод»<ref name=autogenerated1 />.
Формы, принятые иностранными организациями для русской передачи слова «Unicode», являются рекомендательными.
== См. также ==
* [[Символы, представленные в Юникоде]]
* [[ASCII]]
* [[ISO 8859-1]]
* [[UTF-8]]
* [[UTF-16]]
* [[UTF-32]]
* [[Кириллица в Юникоде]]
* [[Дроби в Юникоде]]
* [[XeTeX]]
* [[Шрифты, поддерживающие юникод]]
* [[Свободные универсальные шрифты]]
* [[Windows Glyph List 4]]
* [[Широкий символ]]
* Библиотека [[GLib]] содержит широкий набор функций для работы c символами и строками в кодировке Unicode
* [[Проект:Внесение символов алфавитов народов России в Юникод]]
== Примечания ==
{{Примечания}}
== Ссылки ==
* [http://www.unicode.org/ Официальный сайт Консорциума Юникода] {{ref-en}}
* {{dmoz|Computers/Software/Globalization/Character_Encoding/Unicode/|Unicode}} {{ref-en}}
* Статья «[http://www.unicode.org/standard/translations/russian.html Что такое Unicode?]» {{ref-ru}} на официальном сайте Консорциума
* [http://www.unicode.org/versions/latest/ Последняя версия стандарта Юникод] {{ref-en}}
* Последнюю версию стандарта ISO/IEC 10646 ищите в [http://standards.iso.org/ittf/PubliclyAvailableStandards/ списке доступных стандартов] {{ref-en}}. Документы, соответствующие стандарту Unicode 7.0: [http://standards.iso.org/ittf/PubliclyAvailableStandards/c056921_ISO_IEC_10646_2012.zip ISO/IEC 10646] (файл ZIP) {{ref-en}}, [http://standards.iso.org/ittf/PubliclyAvailableStandards/c061712_ISO_IEC_10646_2012_Amd_1_2013.zip Amendments 1] (файл ZIP) {{ref-en}}, Amendments 2 (по состоянию 2014-08-06 ещё недоступен)
* [http://unicode-table.com/ Таблица символов Юникода с названиями и описаниями] {{ref-ru}} {{ref-en}} {{ref-de}}
* [http://www.unicode.org/versions/Unicode5.0.0/appC.pdf Связь Юникода версии 5.0.0 и ISO/IEC 10646] (файл PDF) {{ref-en}}
* [http://www.cl.cam.ac.uk/~mgk25/unicode.html FAQ по UTF-8 и Unicode] {{ref-en}}
* [[Кириллица в Юникоде]]: http://www.unicode.org/charts/PDF/U0400.pdf, http://www.unicode.org/charts/PDF/U0500.pdf, http://www.unicode.org/charts/PDF/U2DE0.pdf, http://www.unicode.org/charts/PDF/UA640.pdf {{ref-en}}
* [http://www.i18nguy.com/surrogates.html Включение поддержки дополнительных символов Юникода в Windows] {{ref-en}}
* [http://www.fileformat.info/info/unicode/char/search.htm Поиск по символам Юникода] {{ref-en}}
{{Стандарты ISO}}
{{Шрифтовой дизайн}}
[[Категория:Юникод|*]]
[[Категория:Стандарты Интернета]]
[[Категория:Стандарты ISO]]' |
Унифицированная разница изменений правки (edit_diff ) | '@@ -1079,12 +1079,14 @@
{{Примечания}}
== Ссылки ==
+
* [http://www.unicode.org/ Официальный сайт Консорциума Юникода] {{ref-en}}
* {{dmoz|Computers/Software/Globalization/Character_Encoding/Unicode/|Unicode}} {{ref-en}}
-* [http://www.unicode.org/standard/translations/russian.html Что такое Unicode?] {{ref-ru}}
-* Последняя версия [http://www.unicode.org/versions/latest/ стандарта Юникод] {{ref-en}}
+* Статья «[http://www.unicode.org/standard/translations/russian.html Что такое Unicode?]» {{ref-ru}} на официальном сайте Консорциума
+* [http://www.unicode.org/versions/latest/ Последняя версия стандарта Юникод] {{ref-en}}
+* Последнюю версию стандарта ISO/IEC 10646 ищите в [http://standards.iso.org/ittf/PubliclyAvailableStandards/ списке доступных стандартов] {{ref-en}}. Документы, соответствующие стандарту Unicode 7.0: [http://standards.iso.org/ittf/PubliclyAvailableStandards/c056921_ISO_IEC_10646_2012.zip ISO/IEC 10646] (файл ZIP) {{ref-en}}, [http://standards.iso.org/ittf/PubliclyAvailableStandards/c061712_ISO_IEC_10646_2012_Amd_1_2013.zip Amendments 1] (файл ZIP) {{ref-en}}, Amendments 2 (по состоянию 2014-08-06 ещё недоступен)
* [http://unicode-table.com/ Таблица символов Юникода с названиями и описаниями] {{ref-ru}} {{ref-en}} {{ref-de}}
-* [http://www.unicode.org/versions/Unicode5.0.0/appC.pdf Связь Юникода и ISO/IEC 10646] (файл PDF) {{ref-en}}
+* [http://www.unicode.org/versions/Unicode5.0.0/appC.pdf Связь Юникода версии 5.0.0 и ISO/IEC 10646] (файл PDF) {{ref-en}}
* [http://www.cl.cam.ac.uk/~mgk25/unicode.html FAQ по UTF-8 и Unicode] {{ref-en}}
* [[Кириллица в Юникоде]]: http://www.unicode.org/charts/PDF/U0400.pdf, http://www.unicode.org/charts/PDF/U0500.pdf, http://www.unicode.org/charts/PDF/U2DE0.pdf, http://www.unicode.org/charts/PDF/UA640.pdf {{ref-en}}
* [http://www.i18nguy.com/surrogates.html Включение поддержки дополнительных символов Юникода в Windows] {{ref-en}}
' |
Новый размер страницы (new_size ) | 103228 |
Старый размер страницы (old_size ) | 102490 |
Изменение размера в правке (edit_delta ) | 738 |
Добавленные в правке строки (added_lines ) | [
0 => false,
1 => '* Статья «[http://www.unicode.org/standard/translations/russian.html Что такое Unicode?]» {{ref-ru}} на официальном сайте Консорциума',
2 => '* [http://www.unicode.org/versions/latest/ Последняя версия стандарта Юникод] {{ref-en}}',
3 => '* Последнюю версию стандарта ISO/IEC 10646 ищите в [http://standards.iso.org/ittf/PubliclyAvailableStandards/ списке доступных стандартов] {{ref-en}}. Документы, соответствующие стандарту Unicode 7.0: [http://standards.iso.org/ittf/PubliclyAvailableStandards/c056921_ISO_IEC_10646_2012.zip ISO/IEC 10646] (файл ZIP) {{ref-en}}, [http://standards.iso.org/ittf/PubliclyAvailableStandards/c061712_ISO_IEC_10646_2012_Amd_1_2013.zip Amendments 1] (файл ZIP) {{ref-en}}, Amendments 2 (по состоянию 2014-08-06 ещё недоступен)',
4 => '* [http://www.unicode.org/versions/Unicode5.0.0/appC.pdf Связь Юникода версии 5.0.0 и ISO/IEC 10646] (файл PDF) {{ref-en}}'
] |
Удалённые в правке строки (removed_lines ) | [
0 => '* [http://www.unicode.org/standard/translations/russian.html Что такое Unicode?] {{ref-ru}}',
1 => '* Последняя версия [http://www.unicode.org/versions/latest/ стандарта Юникод] {{ref-en}}',
2 => '* [http://www.unicode.org/versions/Unicode5.0.0/appC.pdf Связь Юникода и ISO/IEC 10646] (файл PDF) {{ref-en}}'
] |
Все внешние ссылки, добавленные в правке (added_links ) | [
0 => 'http://standards.iso.org/ittf/PubliclyAvailableStandards/',
1 => 'http://standards.iso.org/ittf/PubliclyAvailableStandards/c056921_ISO_IEC_10646_2012.zip',
2 => 'http://standards.iso.org/ittf/PubliclyAvailableStandards/c061712_ISO_IEC_10646_2012_Amd_1_2013.zip'
] |
Все внешние ссылки в новом тексте (all_links ) | [
0 => 'http://www.unicode.org/standard/UnicodeTranscriptions.html',
1 => 'http://www.webcitation.org/618OOcYRY',
2 => 'http://www.paratype.ru/help/term/terms.asp?code=361',
3 => 'http://www.unicode.org/standard/principles.html',
4 => 'http://www.webcitation.org/618OPFD0i',
5 => 'http://www.unicode.org/history/publicationdates.html',
6 => 'http://www.webcitation.org/618OPfL5z',
7 => 'http://www.unicode.org/consortium/consort.html',
8 => 'http://www.webcitation.org/618OQ5Syr',
9 => 'http://www.unicode.org/versions/Unicode5.2.0/Foreword.pdf',
10 => 'http://www.webcitation.org/618OQVqZN',
11 => 'http://www.unicode.org/versions/Unicode5.2.0/ch02.pdf',
12 => 'http://www.webcitation.org/618OQvPSL',
13 => 'http://www.unicode.org/versions/Unicode5.2.0/ch07.pdf',
14 => 'http://www.webcitation.org/618ORPqRV',
15 => 'http://www.unicode.org/history/unicode88.pdf',
16 => 'http://www.webcitation.org/618ORt6df',
17 => 'http://support.microsoft.com/kb/99884',
18 => 'http://www.webcitation.org/618OSVei1',
19 => 'http://w3pro.ru/news/unicode-ispolzuetsya-pochti-na-50-veb-saitov',
20 => 'http://www.webcitation.org/618OTTP1T',
21 => 'http://std.dkuug.dk/JTC1/SC2/WG2/docs/n4566.pdf',
22 => 'http://www.unicode.org/Public/reconstructed/1.0.0/UnicodeData.txt',
23 => 'http://www.unicode.org/Public/reconstructed/1.0.1/UnicodeData.txt',
24 => 'http://www.unicode.org/Public/1.1-Update/UnicodeData-1.1.5.txt',
25 => 'http://www.unicode.org/Public/2.0-Update/UnicodeData-2.0.14.txt',
26 => 'http://www.unicode.org/Public/2.1-Update/UnicodeData-2.1.2.txt',
27 => 'http://www.unicode.org/Public/3.0-Update/UnicodeData-3.0.0.txt',
28 => 'http://www.unicode.org/Public/3.1-Update/UnicodeData-3.1.0.txt',
29 => 'http://www.unicode.org/Public/3.2-Update/UnicodeData-3.2.0.txt',
30 => 'http://www.unicode.org/Public/4.0-Update/UnicodeData-4.0.0.txt',
31 => 'http://www.unicode.org/Public/4.1.0/ucd/UnicodeData.txt',
32 => 'http://www.unicode.org/Public/5.0.0/ucd/UnicodeData.txt',
33 => 'http://www.unicode.org/Public/5.1.0/ucd/UnicodeData.txt',
34 => 'http://www.unicode.org/Public/5.2.0/ucd/UnicodeData.txt',
35 => 'http://www.unicode.org/Public/6.0.0/ucd/UnicodeData.txt',
36 => 'http://www.unicode.org/Public/6.1.0/ucd/UnicodeData.txt',
37 => 'http://www.unicode.org/Public/6.2.0/ucd/UnicodeData.txt',
38 => 'http://www.unicode.org/Public/6.3.0/ucd/UnicodeData.txt',
39 => 'http://www.unicode.org/Public/7.0.0/ucd/UnicodeData.txt',
40 => 'http://unicode.org/roadmaps/tip/',
41 => 'http://www.unicode.org/faq/emoji_dingbats.html',
42 => 'http://www.unicode.org/policies/stability_policy.html',
43 => 'http://habrahabr.ru/post/45489/',
44 => 'http://www.transl-gunsmoker.ru/2008/11/unicode.html',
45 => 'http://dev.mysql.com/doc/refman/5.7/en/regexp.html',
46 => 'http://www.cl.cam.ac.uk/~mgk25/ucs/utf-8-history.txt',
47 => 'http://www.unicode.org/unicode/reports/tr15/#Primary_Exclusion_List_Table',
48 => 'http://tools.ietf.org/html/rfc4042',
49 => 'http://www.linuxdoc.ru/manpages/man7/utf-8.7.html',
50 => 'http://unicode.org/faq/utf_bom.html#gen6',
51 => 'http://www.unicode.org/',
52 => 'http://www.unicode.org/standard/translations/russian.html',
53 => 'http://www.unicode.org/versions/latest/',
54 => 'http://standards.iso.org/ittf/PubliclyAvailableStandards/',
55 => 'http://standards.iso.org/ittf/PubliclyAvailableStandards/c056921_ISO_IEC_10646_2012.zip',
56 => 'http://standards.iso.org/ittf/PubliclyAvailableStandards/c061712_ISO_IEC_10646_2012_Amd_1_2013.zip',
57 => 'http://unicode-table.com/',
58 => 'http://www.unicode.org/versions/Unicode5.0.0/appC.pdf',
59 => 'http://www.cl.cam.ac.uk/~mgk25/unicode.html',
60 => 'http://www.i18nguy.com/surrogates.html',
61 => 'http://www.fileformat.info/info/unicode/char/search.htm',
62 => 'http://www.unicode.org/charts/PDF/U0400.pdf',
63 => 'http://www.unicode.org/charts/PDF/U0500.pdf',
64 => 'http://www.unicode.org/charts/PDF/U2DE0.pdf',
65 => 'http://www.unicode.org/charts/PDF/UA640.pdf'
] |
Ссылки на странице до правки (old_links ) | [
0 => 'http://dev.mysql.com/doc/refman/5.7/en/regexp.html',
1 => 'http://habrahabr.ru/post/45489/',
2 => 'http://std.dkuug.dk/JTC1/SC2/WG2/docs/n4566.pdf',
3 => 'http://support.microsoft.com/kb/99884',
4 => 'http://tools.ietf.org/html/rfc4042',
5 => 'http://unicode-table.com/',
6 => 'http://unicode.org/faq/utf_bom.html#gen6',
7 => 'http://unicode.org/roadmaps/tip/',
8 => 'http://w3pro.ru/news/unicode-ispolzuetsya-pochti-na-50-veb-saitov',
9 => 'http://www.cl.cam.ac.uk/~mgk25/ucs/utf-8-history.txt',
10 => 'http://www.cl.cam.ac.uk/~mgk25/unicode.html',
11 => 'http://www.fileformat.info/info/unicode/char/search.htm',
12 => 'http://www.i18nguy.com/surrogates.html',
13 => 'http://www.linuxdoc.ru/manpages/man7/utf-8.7.html',
14 => 'http://www.paratype.ru/help/term/terms.asp?code=361',
15 => 'http://www.transl-gunsmoker.ru/2008/11/unicode.html',
16 => 'http://www.unicode.org/',
17 => 'http://www.unicode.org/Public/1.1-Update/UnicodeData-1.1.5.txt',
18 => 'http://www.unicode.org/Public/2.0-Update/UnicodeData-2.0.14.txt',
19 => 'http://www.unicode.org/Public/2.1-Update/UnicodeData-2.1.2.txt',
20 => 'http://www.unicode.org/Public/3.0-Update/UnicodeData-3.0.0.txt',
21 => 'http://www.unicode.org/Public/3.1-Update/UnicodeData-3.1.0.txt',
22 => 'http://www.unicode.org/Public/3.2-Update/UnicodeData-3.2.0.txt',
23 => 'http://www.unicode.org/Public/4.0-Update/UnicodeData-4.0.0.txt',
24 => 'http://www.unicode.org/Public/4.1.0/ucd/UnicodeData.txt',
25 => 'http://www.unicode.org/Public/5.0.0/ucd/UnicodeData.txt',
26 => 'http://www.unicode.org/Public/5.1.0/ucd/UnicodeData.txt',
27 => 'http://www.unicode.org/Public/5.2.0/ucd/UnicodeData.txt',
28 => 'http://www.unicode.org/Public/6.0.0/ucd/UnicodeData.txt',
29 => 'http://www.unicode.org/Public/6.1.0/ucd/UnicodeData.txt',
30 => 'http://www.unicode.org/Public/6.2.0/ucd/UnicodeData.txt',
31 => 'http://www.unicode.org/Public/6.3.0/ucd/UnicodeData.txt',
32 => 'http://www.unicode.org/Public/7.0.0/ucd/UnicodeData.txt',
33 => 'http://www.unicode.org/Public/reconstructed/1.0.0/UnicodeData.txt',
34 => 'http://www.unicode.org/Public/reconstructed/1.0.1/UnicodeData.txt',
35 => 'http://www.unicode.org/charts/PDF/U0400.pdf',
36 => 'http://www.unicode.org/charts/PDF/U0500.pdf',
37 => 'http://www.unicode.org/charts/PDF/U2DE0.pdf',
38 => 'http://www.unicode.org/charts/PDF/UA640.pdf',
39 => 'http://www.unicode.org/consortium/consort.html',
40 => 'http://www.unicode.org/faq/emoji_dingbats.html',
41 => 'http://www.unicode.org/history/publicationdates.html',
42 => 'http://www.unicode.org/history/unicode88.pdf',
43 => 'http://www.unicode.org/policies/stability_policy.html',
44 => 'http://www.unicode.org/standard/UnicodeTranscriptions.html',
45 => 'http://www.unicode.org/standard/principles.html',
46 => 'http://www.unicode.org/standard/translations/russian.html',
47 => 'http://www.unicode.org/unicode/reports/tr15/#Primary_Exclusion_List_Table',
48 => 'http://www.unicode.org/versions/Unicode5.0.0/appC.pdf',
49 => 'http://www.unicode.org/versions/Unicode5.2.0/Foreword.pdf',
50 => 'http://www.unicode.org/versions/Unicode5.2.0/ch02.pdf',
51 => 'http://www.unicode.org/versions/Unicode5.2.0/ch07.pdf',
52 => 'http://www.unicode.org/versions/latest/',
53 => 'http://www.webcitation.org/618OOcYRY',
54 => 'http://www.webcitation.org/618OPFD0i',
55 => 'http://www.webcitation.org/618OPfL5z',
56 => 'http://www.webcitation.org/618OQ5Syr',
57 => 'http://www.webcitation.org/618OQVqZN',
58 => 'http://www.webcitation.org/618OQvPSL',
59 => 'http://www.webcitation.org/618ORPqRV',
60 => 'http://www.webcitation.org/618ORt6df',
61 => 'http://www.webcitation.org/618OSVei1',
62 => 'http://www.webcitation.org/618OTTP1T'
] |
Была ли правка сделана через выходной узел сети Tor (tor_exit_node ) | 0 |
Unix-время изменения (timestamp ) | 1407298012 |