Уникод: Разлика между версии

Изтрито е съдържание Добавено е съдържание
→‎Съчетаване на символи: Стилови редакции, типографски кавички, уеднаквяване на термини
Структурата на статията е уеднаквена с английската, добавен е превод на уводната част. Премахнат е разделът „Сведения“, който съдържаше остаряла, непълна и дублирана информация.
Ред 3:
[[File:Unicode logo.svg|thumb|180px|Лого на Консорциум Уникод]]
 
'''Уникод''' ({{lang-en|Unicode}}) е стандарт в компютърната индустрия за кодиране, представяне и обработка на текст на повечето писмености[[писменост]]и в света. Той е разработен да реши проблемите, причинявани от едновременната употреба на голям брой несъвместими помежду си традиционни кодировки за различните езици. Стандартът се поддържа от Консорциума Уникод и през 2018 г. най-новата му версия 11.0 съдържа 137 439 [[знак]]а и обхваща 146 писмености на съвременни и [[мъртъв език|мъртви езици]], както и много [[символ]]и (например от [[математика]]та и инженерните дисциплини) и [[емоджи]]та. Знаковият набор на Уникод е синхронизиран със стандарта [[ISO/IEC 10646]] и кодовете в двата стандарта са еднакви.
 
''Стандартът Уникод'' се състои от комплект справочни таблици за кодовете, метод за кодиране и набор от стандартни знакови кодировки, комплект от еталонни [[файл]]ове с данни, както и някои документи, свързани с изброените, например относно свойствата на знаците, правилата за нормализация, декомпозиция, визуализиране и ред на изписване на двупосочен текст (за правилно показване на текст със смесени посоки на изписване: от дясно наляво, като при [[арабска азбука|арабски]] и [[иврит]], и от ляво надясно).
== Сведения ==
Дефинираният в Уникод набор от [[символ]]и е създаден с цел да включи писмените знаци от всички азбуки (включително тези на много [[мъртъв език|мъртви езици]]) и други символи, използвани в [[математика]]та и инженерните науки.
 
Успехът на Уникод в обединяването на знаковите набори е довел до широкото му използване и доминиращо положение в [[интернационализация]]та и [[Езикова локализация|локализацията]] на компютърен софтуер. Стандартът се използва в множество съвременни технологии, включително съвременните [[Операционна система|операционни системи]], [[XML]], [[езици за програмиране]] и [[.NET Framework]].
На всеки знак или символ е приписан определен номер в кодовата таблица, който служи например за обозначаване на символа в даден [[шрифт]]. Тъй като символите са над сто хиляди и не е възможно номерата им да се представят в един [[байт]], номерата се трансформират по специални правила ([[UTF]]) в един, два, три или четири байта.
* Обикновената [[латиница|латинска азбука]], цифрите и основните препинателни знаци се представят с един байт.
* Повечето латински букви с диакритични знаци, [[кирилица]]та, [[гръцка азбука|гръцката]], [[арменска азбука|арменската]], [[еврейска азбука|еврейската]], [[арабска азбука|арабската]] и други азбуки и някои знаци се представят с два байта.
* Други азбуки ([[африка]]нски, [[Азия|азиа]]тски, [[америка]]нски) и някои специални знаци се кодират с три или четири байта.
 
Уникод може да се прилага чрез различни кодировки. Стандартът дефинира [[UTF-8]], [[UTF-16]], [[UTF-32]], а в употреба са и още няколко начина за кодиране. Най-често използваните кодировки са UTF-8, UTF-16 и UCS-2, предшественик на UTF-16.
Традиционните кодировки са еднобайтови, с малък брой изключения, които използват подобни на UTF механизми (основно за източноазиатските езици). Всеки текст, представен в някоя от тези кодировки, може да бъде преобразуван без загуба към Уникод, при условие че знаем коя точно е въпросната кодировка. Обратното преобразуване, от Уникод към някоя от по-старите кодировки, е еднозначно и безспорно за тези знаци, които съществуват в целевата кодировка. Но текстовете, кодирани с Уникод, могат да съдържат всякакви знаци и в общия случай не е възможно да се преобразуват коректно в по-стара кодировка.
 
При UTF-8, използвана в над 90% от уебсайтовете, за първите 128 кода се използва по един [[байт]], а за останалите – до 4 байта<ref>С един байт се представят например
Например текст само на [[кирилица]] или само на [[Чехия|чешка]] латиница (с диакритични знаци) се преобразува без проблем от съответната кодировка към Уникод и обратно. От друга страна, текст в Уникод, съдържащ и кирилица, и латиница с диакритични знаци (букви с ударения и лигатури), не може да се преобразува изцяло: ще се загуби или кирилицата, или буквите с диакритични знаци, в зависимост от целевата кодировка.
*[[латиница]]та, цифрите и основните препинателни знаци; с два – Повечетоповечето латински букви с диакритични знаци, [[кирилица]]та, [[гръцка азбука|гръцката]], [[арменска азбука|арменската]], [[еврейска азбука|еврейската]], и [[арабска азбука|арабската]] иазбука; другис повече – [[африка]]нски, [[Азия|азиа]]тски, [[америка]]нски азбуки и някоидр.</ref>. знациПървите се128 представяткода от Уникод съвпадат с дватези на [[ASCII]], което означава, че всеки текст в ASCII е и в байтаUTF-8.
 
При UCS-2 за всеки знак се използват два байта (16 [[бит]]а), но така могат да се представят само първите 65 536 кода, които образуват групата ''Basic Multilingual Plane'' (BMP, ''Основна многоезична група''). Тъй като са възможни общо 1 114 112 кода в 17 различни групи, а до момента вече са дефинирани над 137 000 от тях, много от знаците в Уникод са извън обхвата на UCS-2. Затова тя се смята за остаряла, макар да е все още в широка употреба. UTF-16 разширява UCS-2, като използва същото 16-битово кодиране за BMP и 4-байтово – за останалите групи. Всеки текст в UCS-2, който не съдържа кодове в запазения диапазон U+D800–U+DFFF, представлява и валиден текст в UTF-16.
Поради кодирането на всеки знак с един до четири байта (вместо само с един), обикновено текстовете в Уникод са с по-голяма дължина в байтове от същите текстове в старите еднобайтови кодировки.
 
При UTF-32 (наричана още UCS-4) за всеки знак се използват 4 байта. Както и при UCS-2, броят байтове на знак е фиксиран, което улеснява индексирането им в [[памет]]та, но за разлика от UCS-2, с UTF-32 могат да се представят всички кодове в Уникод. Поради кодирането на всеки знак с четири байта обаче UTF-32 заема много повече памет от другите кодировки и не се използва широко.
 
== Създаване и разработка ==
Line 49 ⟶ 48:
През 1996 г. с Уникод 2.0 е внедрен механизъм за заместващи символи, като по този начин Уникод вече не се ограничава до 16 бита. Това увеличава капацитета на Уникод до над един милион кодови единици, което позволява кодирането на много исторически скриптове (например, [[египетски йероглиф]]и) и хиляди рядко използвани или остарели символи, за които се е считало, че няма нужда да бъдат кодирани. Сред символите, първоначално непредвидени за кодиране с Уникод, са рядко използвани канджи или китайски йероглифи, много от които са част от имена на хора и места, което ги прави рядко използвани, но много по-важни, отколкото се предвижда в оригиналната архитектура на Уникод.<ref name=unicoderevisited>{{Цитат уеб |фамилно_име=Searle |първо_име=Stephen J |заглавие=Unicode Revisited|уеб_адрес=http://tronweb.super-nova.co.jp/unicoderevisited.html|достъп_дата= 2013-01-18 |език=en}}</ref>
 
=== Архитектура и терминология ===
Уникод дефинира кодово пространство от 1 114 112 кодови точки в диапазона от 0<sub>hex</sub> до 10FFFF<sub>hex.</sub> Обикновено кодова точка на Уникод се посочва с изписване на „U+“, следвано от [[Шестнайсетична бройна система|шестнадесетично число]]. За кодова точка в групата Basic Multilingual Plane (BMP) се използват четири цифри (например за латинската главна буква X използваме U+0058). За кодови точки извън BMP се използват пет или шест цифри.
 
==== Уникод групи и блокове ====
Уникод се разделя на седемнадесет групи ({{lang-en|planes}}), номерирани от 0 до 16:
{| class="navbox collapsible" style="table-layout:fixed;"
Line 158 ⟶ 157:
Във всяка група символите са разпределени в блокове от логически свързани символи. Въпреки че блоковете са с произволен размер, броят кодови точки в тях винаги е кратен на 16, а често и на 128. Знаците, необходими за дадена писменост, може да са пръснати в няколко различни блока.
 
==== Свойство „Обща категория“ ====
Всяка кодова точка има свойство „Обща категория“ ({{Lang-en |General Category}}). Основните категории са: буква, комбиниращ или ограждащ знак, число, пунктуация, символ, разделител и друго. Всяка от тези категории има подразделения. В повечето случаи за точно задаване характеристиките на дадена кодова точка е необходимо да се използват и други свойства. Възможните общи категории са:
 
Line 270 ⟶ 269:
Графичните, форматиращите, контролните и частните знаци се наричат общо ''присвоени знаци'' (''assigned characters''). '''Запазени''' (''reserved'') са тези кодови точки, които са достъпни за използване, но още не са присвоени. В Уникод 10.0 има 873 775 запазени кодови точки.
 
==== Абстрактни знаци ====
Дефинираният от Уникод набор от графични и форматиращи знаци не отговаря пряко на съвкупността от възможните за представяне с Уникод ''абстрактни знаци''. Уникод кодира знаците, асоциирайки абстрактен знак с конкретна кодова точка. Не всички абстрактни знаци обаче се кодират като един единствен знак на Уникод и някои абстрактни знаци може да бъдат представени в Уникод като поредица от два или повече знака. Например малката латинска буква „i“ с [[огонек]], [[Точка (диакритичен знак)|точка отгоре]] и [[Акут|остро ударение]], необходима за [[литовски език]], се представя чрез поредицата U+012F, U+0307, U+301. Уникод поддържа списък от уникални по име поредици от знаци за абстрактните знаци, които не се кодират пряко.
 
Всички графични, форматиращи и частно използвани знаци имат уникално и неизменно име, по което се идентифицират. Това се гарантира от Уникод след версия 2.0 чрез политиката за стабилност на имената (''Name Stability''). В случаи, в които името е дефектно или подвеждащо, или пък има сериозна типографска грешка, се формира официален псевдоним и програмите се насърчават да използват този псевдоним вместо официалното име на знака.
 
=== Консорциум Уникод ===
 
Консорциумът Уникод (''Unicode Consortium'') е нестопанска организация, която координира развитието на Уникод. Нейни пълноправни членове са повечето от най-големите софтуерни и хардуерни компании, заинтересовани от стандартите за обработка на текст, сред които [[Adobe Systems]], [[Епъл|Apple]], [[Гугъл (компания)|Google]], [[IBM]], [[Microsoft]], [[Оракъл_(корпорация)|Oracle Corporation]], [[Yahoo!]], както и  министерството на даренията и вероизповеданията в Оман.<ref>{{Цитат уеб |уеб_адрес=http://www.unicode.org/consortium/members.html |заглавие=The Unicode Consortium Members |достъп_дата=2018-06-05 |език=en}}</ref>
Line 281 ⟶ 280:
Консорциумът има амбициозната цел в даден момент да замени съществуващите знакови кодировки с Уникод и в частност с неговите стандартни схеми за кодиране UTF (Unicode Transformation Format), тъй като много от сегашните стандарти са ограничени по обем и обхват и са несъвместими с [[Многоезичност|многоезични]] среди.
 
=== Версии ===
Уникод е разработен в сътрудничество с международната организация за стандартизация (International Organization for Standardization) и споделя знаковия си репертоар с ISO/IEC 10646: Universal Character Set. Уникод и ISO/IEC 10646 функционират по идентичен начин като знакови кодировки, но Уникод съдържа много повече информация за изпълнителите, покривайки подробно теми като побитово кодиране, сортиране и рендиране. В стандарта Уникод са изброени множество свойства на знаците, включително необходимите за поддръжката на двупосочен текст (bidirectional text). Двата стандарта използват леко различна терминология.
 
Line 470 ⟶ 469:
|}
 
=== Обхванати писмености ===
[[File:Unicode sample.png|thumb|right|200px|Много съвременни приложения са в състояние да изобразяват значително подмножество от писменостите в Уникод, както се вижда на тази снимка от [[OpenOffice.org]].]]