Уникод

от Уикипедия, свободната енциклопедия
Направо към: навигация, търсене
Емблема за пояснителна страница За помощната страница вижте Уикипедия:Уникод.

Лого на Консорциум Уникод

Уникод (на английски: Unicode) е стандарт в компютърната индустрия за кодиране, представяне и обработка на текст на повечето писмености в света. Той е разработен да реши проблемите, причинявани от едновременната употреба на голям брой несъвместими помежду си традиционни кодировки за различните езици.

Сведения[редактиране | редактиране на кода]

Уникод (универсална кодировка) е набор от символи, създаден с цел е да съдържа всеки символ, използван при писане, на всички азбуки (включително и много мъртви езици) и други символи, използвани в математиката и инженерните науки.

Всеки знак или символ отговаря на определен номер в кодовата таблица, който се ползва примерно за изобразяване на символа в даден шрифт. Тъй като символите са няколко десетки хиляди и не е възможно да се представят в един байт, по специални правила (UTF) номерата на символите се трансформират в един, два, три или четири байта, за да могат да се ползват от компютрите.

Всеки един от досегашните набори от символи, кодирани с един байт, може без загуба да бъде преобразуван към Уникод, при едно условие: да сме сигурни точно от кой набор (в коя кодировка) са символите. Обратното преобразуване, от Уникод към някоя от еднобайтовите кодировки, е еднозначно и безспорно за тези знаци, които съществуват в целевата кодировка. Но текстовете в универсалната кодировка могат да съдържат всякакви знаци и тогава не е възможно да се преобразуват коректно в някоя еднобайтова кодировка.

Например текст само на кирилица или само на чешка латиница (с диакритични знаци) се преобразуват без проблем от съответната кодировка към Уникод и обратно. Обаче текст в Уникод и с кирилица и с латински диакритични знаци (букви с ударения и лигатури), не може да се преобразува изцяло: или кирилицата ще се загуби, или буквите с диакритични знаци, в зависимост от целевата кодировка.

Относно дължината на текстовете, поради кодирането на всеки знак с един до четири байта (вместо само с един), обикновено текстове в Уникод са с по-голяма дължина от същите текстове в старите еднобайтови кодировки.

Създаване и разработка[редактиране | редактиране на кода]

Уникод е създаден с цел да превъзмогне ограниченията на традиционните методи за кодиране на символи, като например дефинираните със стандарт ISO-8859, които намират широко приложение в различни страни на света, но до голяма степен остават несъвместими един с друг. Много от тези традиционни методи за кодиране на символи споделят един общ недостатък, а именно, че те позволяват двуезична компютърна обработка на текст (обикновено използвайки латински букви и местна азбука), но не и многоезична обработка (компютърна обработка на произволен набор от азбуки и символи смесени една с друга).

Уникод, по замисъл, кодира основните символи - графеми и графема подобни звена - а не вариантните глифове (графики) за тези знаци.

При обработка на текст, Уникод предоставя уникален код, а не глиф за всеки символ. С други думи, Уникод представя всеки символ по един абстрактен начин и оставя визуализацията му (размер, форма, шрифт или стил), на друг софтуер, като например уеб браузър или текстообработваща програма.

Първите 256 кода са избрани да бъдат идентични със съдържанието на ISO-8859-1, като по този начин е максимално улеснено конвертирането на съществуващ текст използващ латинска азбука, с цел насърчаване използването на Уникод. Много по същество идентични знаци са кодирани няколко пъти с различни кодове, за да се запазят отличията, използвани от утвърдени кодировки и по този начин позволяващи преобразуване от тези кодировки в Уникод (и обратно), без загуба на информация.

История[редактиране | редактиране на кода]

Началото на Уникод е поставено през 1987 г., когато Джо Бекер от Ксерокс и Лий Колинс и Марк Дейвис от Апъл започват да проучват практическите аспекти на създаването на универсален набор от символи. [2] През август 1988 г., Джо Бекер публикува проект на предложение за „международна/многоезична система за кодиране на текстови символи, временно наречена Уникод“. Той пояснява, че „името „Уникод“ е замислено да подсказва за уникална, единна, универсална (от англ. unique, unified, universal) система за кодиране“. [3]

В този документ, озаглавен „Уникод 88“, Бекер описва 16-битов модел на символите: [3]

Уникод е предназначен да отговори на необходимостта от работещо, надеждно, многоезично кодиране на текст. Уникод може да бъде грубо описан като „широк ASCII“, разтеглен до 16 бита, за да обхване символите на всички живи световни езици. При добре проектирана архитектура 16 бита за символ са повече от достатъчни за тази цел.

Неговата оригинална 16-битова архитектура се основава на предположението, че е необходимо кодиране само на скриптовете и символите в съвременна употреба: [3]

Уникод дава по-висок приоритет на осигуряването на използваемост и полезност за в бъдеще, отколкото на опазването на отминали антики. Уникод е предназначен на първо място за символите, публикувани в съвременен текст (например във всички вестници и списания, отпечатани в света през 1988 г.), чийто брой е несъмнено много под 214 = 16384. Извън тези символи в съвременна употреба, всички други могат да бъдат определени като морално остарели или рядко използвани; те са по-добри кандидати да бъдат регистрирани за лично ползване, отколкото да задръстват публичния списък на полезните Уникод символи (кодове).

В началото на 1989 г. работната група, занимаваща се с Уникод, се разширява и вече включва и Кен Уистлър и Майк Кърнаган от Метафор, Карън Смит-Йошимура и Джоан Алипран от RLG, както и Глен Райт от Сън Майкросистъмс, а през 1990 г. към нея се присъединяват Мишел Зигнард и Асмус Фрайтаг от Майкрософт и Рик Макгоуън от NeXT. До края на 1990 г. по-голямата част от работата по определяне на съществуващи стандарти за кодиране на знаците е била завършена, и окончателният проект на Уникод е готов за представяне.

Консорциумът Уникод е учреден на 3 януари 1991 г. в Калифорния, а през октомври 1991 г. е публикуван първият том на стандарта Уникод. Вторият том, който обхваща и китайските логограми, е публикуван през юни 1992 г.

През 1996 г. с Уникод 2.0 е внедрен механизъм за заместващи символи, като по този начин Уникод вече не се ограничава до 16 бита. Това увеличава капацитета на Уникод до над един милион кодови единици, което позволява кодирането на много исторически скриптове (например, египетски йероглифи) и хиляди рядко използвани или остарели символи, за които се е считало, че няма нужда да бъдат кодирани. Сред символите, първоначално непредвидени за кодиране с Уникод, са рядко използвани канджи или китайски йероглифи, много от които са част от имена на хора и места, което ги прави рядко използвани, но много по-важни, отколкото се предвижда в оригиналната архитектура на Уникод. [4]

Архитектура и терминология[редактиране | редактиране на кода]

Уникод дефинира кодово място от 1,114,112 кодови точки в диапазона от 0hex до 10FFFFhex. Кодова точка на Уникод се задава чрез изписването на „U+“, следвано от шестнадесетично число. За кодова точка в Basic Multilingual Plane (BMP) се използват четири цифри (например за латинската главна буква X използваме U+0058). За кодови точки извън BMP се използват пет или шест цифри.

Уникод групи и блокове[редактиране | редактиране на кода]

Уникод се разделя на седемнадесет групи (наричани на английски planes), номерирани от 0 до 16:

Уникод групи и обхват на кодовите точки

Всички кодови точки в BMP могат да бъдат достъпни чрез една единствена кодова единица в UTF-16 и в един, два или три байта в UTF-8. Кодовите точки в група 1 (Planes 1) до група 16 (Planes 16) са достъпни като сурогатни двойки в UTF-16 и кодирани в четири байта в UTF-8.

Във всяка група символите се определят измежду блокове от свързани символи. Въпреки че блоковете са с произволен размер, те винаги представляват множество от 16 кодови точки, а често и от 128 кодови точки. Символи нужни за даден скрипт може да са разпределени измежду няколко различни блока.

Главна символна категория[редактиране | редактиране на кода]

Всяка кодова точка има определено свойство от главната категория. Основните категории са: буква, знак, число, пунктуация, символ, разделител и друго. Във всяка от тези категории има по-малки категории. Главната категория не е подходяща за ежедневно ползване, тъй като се използват множество характеристики за всяка кодова точка. Често трябва да се използват и други свойства за определяне на характеристиките и поведението на дадена кодова точка. Възможните главни категории са:

Главна категория

Кодовите точки в диапазона между U+D800 и U+DBFF (1,024 кодови точки) са известни още като високо заместими кодови точки,  а кодовите точки в диапазона между U+DC99 и U+DFFF (1,024 кодови точки) са известни като слабо заместими кодови точки. Високо заместима кодова точка (известна още като водещ заместител) следвана от слабо заместима кодова точка (известна още като заместител последовател) формират двойка, използвана в UTF-16 за представяне на 1,048,576 кодови точки извън BMP. Високите и слабо заместимите кодови точки не са валидни по отделно. Поради тази причина обхватът на кодовите точки, достъпни за ползване като символи е между U+0000..U+D7FF и U+E000..U+10FFFF (1,112,064 кодови точки). Стойността на тези кодови точки понякога се отнася като скаларна величина.

Някои кодови точки, които не съдържат символи не могат да се използват за шифроване на символи, въпреки че съществуват програми, които вътрешно могат да използват тези кодови точки. Съществуват 66 кодови точки без символи: U+FDD0..U+FDEF и всяка кодова точка, завършваща със стойност FFFE до FFFF (например U+FFFE, U+FFFF, U+1FFFE, U+1FFFF, … U+10FFFe, U+10FFFF).

Обратните кодови точки са тези, които съществуват като кодирани символи, но не са дефинирани като такива от Уникод.

Частно използваните кодови точки са определени символи, които обаче нямат конкретна интерпретация от Уникод стандарта. Поради тази причина всяка размяна на подобни символи изисква собствена интерпретация между изпращача и получателя. Съществуват общо три частни категории в Уникод:

  • U+E000..U+F8FF (6400 символа) - Private Use Area
  • U+F0000..U+FFFD (65, 534 символа) - Supplementary Private Use Area-A
  • U+100000..U+10FFFD (65 534 символа) - Supplementary Private Use Area-B

Графичните символи са символи, които са семантични и имат видима глиф форма или представляват видимо празно място.

След Уникод 8.0 съществуват 120,520 графични символа.

Форматиращите символи са символи, които нямат видимо проявление, но може да имат ефект върху вида или поведението на съседни символи. Съществуват 152 форматиращи символи в Уникод 8.0.

Кодовите точки от групата 65 (U+0000..U+001F и U+007F.. U+009F) са контролни кодове, отговарящи на C0 и C1 контролни кодове, дефинирани в ISO/IEC 6429. От тази група най-често използвани са U+0009 (Tab), U+000A (Преместване с един ред) и U+000D (Return).

Графичните символи, форматиращите символи, контролните символи и частните символи са известни още като присвоени символи.

Абстрактни символи[редактиране | редактиране на кода]

Графичните и форматиращите символи дефинирани от Уникод не отговарят директно на абстрактните символи в Уникод. Уникод кодира символите асоциирайки абстрактен символ със специфична кодова точка. Не всички символи обаче се кодират като един единствен Уникод символ, като някои абстрактни символи могат да бъдат представени в Уникод като поредица от два или повече символа. Така например малката латинска буква „i“ се представя чрез поредицата U+012F, U+0307, U+301. Уникод поддържа лист от уникални по име поредици от символи за абстрактните символи, които не са директно шифровани в Уникод.

Всички графични, форматиращи и частно използвани символи имат уникално и незаменимо име, чрез което се идентифицират. Това се гарантира от Уникод след версия 2.0 чрез политиката Name Stability. В случаи, в които името е дефектно или подвеждащо или пък има сериозна типографска грешка, се формира формален псевдоним и програмите се насърчават да използват този псевдоним вместо официалното име на символа. 

Уникод Консорциум[редактиране | редактиране на кода]

Уникод Консорциум представлява нестопанска организация, координираща развитието на Уникод. Членове в организацията са някои от най-големите софтуерни и хардуерни компании, сред които Adobe Systems, Apple, Google, IBM, Microsoft, Oracle Corporation, Yahoo!, както и  министерството на даренията и вероизповеданията в Оман.

Консорциумът има амбициозната цел в даден момент да замени съществуващите символни стандарти изцяло с Уникод и в частност с неговия UTF (Unicode Transformation Format), тъй като много от сегашните стандарти са лимитирани от размера и обхвата си и са несъвместими с многоезичните среди.

Версии[редактиране | редактиране на кода]

Уникод е разработен в сътрудничество с международната организация за стандартизация (International Organization for Standardization) и споделя знаковия си репертоар с ISO/IEC 10646: Universal Character Set. Уникод и ISO/IEC 10646 функционират по идентичен начин като знакови кодировки, но Уникод съдържа много повече информация за изпълнителите, покривайки подробно теми като побитово кодиране, сортиране и рендиране. В стандарта Уникод са изброени множество свойства на знаците, включително необходимите за поддръжката на двупосочен текст (bidirectional text). Двата стандарта използват леко различна терминология.

Консорциумът публикува стандарта Уникод (The Unicode Standard – ISVN 0-321-18578-1) за първи път през 1991 година и продължава да развива стандарти, базирани на този първоначален вариант. Последната версия на стандарта, Уникод 10.0, e публикувана през юни 2017 година и е достъпна на уебсайта на консорциума. Последната от главните версии (с номера x.0), която е публикувана на хартиен носител, е Уникод 5.0 (ISBN 0-321-48091-0). След Уникод 6.0 обаче стандартът повече не е публикуван във вид на книга. Единствено през 2012 година е обявено, че за основната спецификация на Уникод 6.1 ще бъде достъпна услуга отпечатване с меки корици в 692 страници. За разлика от предходните главни версии, достъпни на хартиени носители, отпечатваната по поръчка основна спецификация не включва таблици на кодовете и анекси, но целият стандарт, включително основната спецификация, е достъпен безплатно на уебсайта на Уникод.

До момента са публикувани много главни и второстепенни версии на стандарта Уникод. Версиите, които не включват промени в знаковия набор, се обозначават с трето число (например „версия 4.0.1“) и са пропуснати в таблицата по-долу.

Версии на Уникод
Версия Дата Книга Съответен ISO/IEC 10646 Edition Писмености Знаци
Общо Съществени допълнения
1.0.0 Октомври 1991 ISBN 0-201-56788-1(Vol.1) 24 7161 Оригиналният набор покрива арабскиарменски, бенгалски, бопомофо, кирилица, деванагари, грузински, гръцки и коптски, гуджарати, гурмукхи, хангъл, иврит, хирагана, каннада, катакана, лаоски, латински, малаялам, ория, тамилски, телугу, тайски и тибетски.
1.0.1 Юни 1992 ISBN 0-201-60845-6(Vol.2) 25 28 359 Дефиниран е първоначалният набор от 20 902 унифицирани идеограми за китайски, японски и корейски (CJK).
1.1 Юни 1993 ISO/IEC 10646-1:1993 24 34 233 Добавени са нови 4306 срички от хангъл към предишните 2305. Премахнат е тибетският.
2.0 Юли 1996 ISBN 0-201-48345-9 ISO/IEC 10646-1:1993 плюс изменения 5, 6 и 7 25 38 950 Премахнати са първоначалните срички на хангъл и са добавени нови 11 172 в нова локация. Тибетският е върнат обратно, но в нова локация и с нов знаков набор. Появява се нов механизъм за сурогатни символи. Добавени са и нови частни области, Plane 15 и Plane 16.
2.1 Май 1998 ISO/IEC 10646-1:1993 плюс изменения 5, 6 и 7, както и два символа от изменение 18 25 38 952 Добавени са знакът на еврото и символ за заместване на обект.
3.0 Септември 1999 ISBN 0-201-61633-5 ISO/IEC 10646-1:2000 38 49 259 Добавени са чероки, етиопски, кхмерски, монголски, бирмански, огам, руническа азбука, синхалски, сирийска азбука, таана, обединени канадски аборигенски срички, срички на йи и набор от брайлови символи.
3.1 Март 2001 ISO/IEC 10646-1:2000

ISO/IEC 10646-2:2001

41 94 205 Добавени са дезерет, готически и староиталийски, както и набор от символи за западната музика и византийската музика и 42 711 идеограми за CJK.
3.2 Март 2002 ISO/IEC 10646-1:2000 плюс изменение 1

ISO/IEC 10646-2:2001

45 95 221 Добавени са филипинските писмености бухид, хануну, тагалог и тагбануа.
4.0 Април 2003 ISBN 0-321-18578-1 ISO/IEC 10646:2003 52 96 447 Добавени са кипърска сричкова азбука, лимбу, линеар B, османия, знаците на Бърнард Шоу (Shavian), тай ле, угаритски, както и хексаграмни символи.
4.1 Март 2005 ISO/IEC 10646:2003 плюс изменение 1 59 97 720 Добавени са бугиски, глаголица, карощи, нов тай лю, староперсийски, силоти нагри и тифинаг, а коптският е отделен от гръцкия. Добавени са още старогръцки числа и музикални символи.
5.0 Юли 2006 ISBN 0-321-48091-0 ISO/IEC 10646:2003 плюс изменение 1 и 2, както и четири символа от изменение 3 64 99 089 Добавени са балийски, клинопис, н’ко, фагс па и финикийски.
5.1 Април 2008 ISO/IEC 10646:2003 плюс изменение 1, 2, 3 и 4 75 100 713 Добавени са карийски, чам, кая ли, лепча, ликийски, лидийски, ол чики (санталски), режанг, саураштра, сундански, вай, както и набори от символи за диска от Фестос, плочките за маджонг и плочките за домино. Има също добавки към бирманския, добавени букви и ръкописни съкращения, използвани в средновековните ръкописи, както и главната буква ẞ.
5.2 Октомври 2009 ISO/IEC 10646:2003 плюс изменение 1, 2, 3, 4, 5 и 6 90 107 361 Добавени са авестийски, бамум, египетски йероглифи (наборът на Алън Гардинър от 1071 знака), имперски арамейски, пахлави, партски, явански, кайтхи, лису, мейтей майек, стар южноарабски, старотюркски, самаритски, тай тхам и тай виет. Добавени са също 4149 нови унифицирани идеограми за CJK (CJK-C), както и разширени джамо за стар хангъл и символи за ведически санскрит.
6.0 Октомври 2010 ISO/IEC 10646:2010 плюс знака за Индийска рупия 93 109 449 Добавени са батак, брахми, мандейска азбука, символи за карти за игра, транспортни символи, символи за географски карти, алхимични символи, емотикони и емоджита, както и 222 нови унифицирани идеограми за CJK (CJK-D).
6.1 Януари 2012 ISO/IEC 10646:2012 100 110 181 Добавени са чакма, ръкописен мероитски, мероитски йероглифи, мяо, шарада, сора сомпенг и такри.
6.2 Септември 2012 ISO/IEC 10646:2012 плюс знакът на турската лира 100 110 182 Добавен е знакът на турската лира.
6.3 Септември 2013 ISO/IEC 10646:2012 плюс шест символа 100 110 187 Добавени са 5 двупосочни форматиращи знака.
7.0 Юни 2014 ISO/IEC 10646:2012 плюс изменения 1 и 2, както и знакът на рублата 123 113 021 Добавени са баса, кавказки албански, стенографската система на Дюплойе, елбасанска азбука, гранта, ходжки, худавади, линеар А, махаджани, манихейска азбука, менде кикакуй, моди, мро, набатейска азбука, стар северноарабски, старопермски, пахау хмонг, палмирски, Пау Чин Хау, псалтирен пахлави, сидхам, тирхута, варанг кшити и наборът Dingbats.
8.0 Юни 2015 ISO/IEC 10646:2014 плюс изменение 1, както и знакът на Лари, 9 CJK идеографа и 41 нови емоджита. 129 120 737 Добавени са ахом, анатолийски йероглифи, хатран, мултани, староунгарски, жестовото писмо на Сътън, 5771 унифицирани идеограми за CJK, набор от малки букви за черокски и пет модификатора за цвят на кожата за емоджитата.
9.0 Юни 1016 ISO/IEC 10646:2014 плюс изменения 1 и 2, адлам, нева, японски тв символи и 74 емоджита и други символи. 135 128 237 Добавени са адлам, бхайкшуки, марчен, нева, осейдж, тангут и 72 емоджита.
10.0 Юни 2017 ISO/IEC 10646:2017 плюс 56 емоджита, 285 знака от хентайгана и 3 знака от квадратната азбука на Занабазар. 139 136 755 Добавени са квадратната азбука на Занабазар, сойомбо, масарам гонди, нюшу, хентайгана (нестандартна хирагана), 7494 унифицирани идеограми за CJK и 56 емоджита.

Обхванати скриптове[редактиране | редактиране на кода]

Уникод обхваща почти всички скриптове използвани днес.

В последната версия на Уникод са включени общо 129 скрипта, въпреки че все още съществуват такива, които не са шифровани, като това са най-вече тези използвани в исторически, литургически и академични контексти. Съществуват още и добавени шрифтове във вече шифровани скриптове, както и символи, използвани най-вече в математиката и музиката (във формата на ноти и ритмични символи).

Комитетът Unicode Roadmap Committee (Майкъл Еверсън, Рик Макгоуън и Кен Уистлър) поддържа листа от скриптове, които са кандидати или потенциални кандидати за шифроване, както и техните ориентировъчни кодови блокове на страницата на Уникод Roadmap, намираща се на уеб сайта на консорциума на Уникод. За някои скриптове, като Jurchen, Nü Shu и Tangut, са направени предложения за шифроване, които се окачва да получат одобрение. За други скриптове, като Mayan и Rongorongo, все още не са направени предложения и се очаква да бъдат одобрени от общността.

Някои модерни скриптове, които не са включени в Уникод (например Tengwar) или такива, които не са квалифицирани за включване в Уникод заради липса на реална полза (например Klingon) са включени в ConScript Unicode Registry заедно с неофициалните, но за сметка на това широко използвани Private Use Area кодове.

Съществува още Medieval Unicode Fond Initiative, чийто фокус пада върху специалните древно латински шрифтове. Част от тях вече са включени в Уникод.

Проектът Script Encoding Initiative, ръководен от Дебора Андерсън в университета Бъркли, Калифорния е стартиран през 2002 година. Целта му е да финансира предложения за скриптове, които все още не са включени в стандарта. Проектът става главен източник на предложения за добавяне на стандарти през последните години.

Картиране и кодиране[редактиране | редактиране на кода]

Няколко механизми са специфични за прилагането на Уникод. Изборът зависи от наличното място за съхранение (storage space), съвместимостта на изходния код (source code compatibility), както и оперативната съвместимост с други системи.

Уникод метод на трансформация и универсален набор от символи[редактиране | редактиране на кода]

Уникод предлага два метода за кодировка: метода за трансформация на Уникод (Unicode Transformation Format (UTF)) и универсалния набор от символи (Universal Character Set (UCS)).  Картите за кодиране на Уникод (encoding maps) са поредици от стойности във фиксирани граници. Числата в имената на кодировката, посочва броят на битовете за един символ (one code value) (за UTF кодировки) или броя на байтове (за UCS ). UTF-8 и UTF- 16 са най-често използваните кодировки. UCS-2 е остаряла версия на UTF- 16; UCS -4 и UTF- 32 са функционално еквивалентни.

UTF кодировките биват:

  • UTF- 1 – остарял предшественик на UTF-8, има максимална съвместимост с ISO 2022, вече не е част от Уникод.
  • UTF- 7 – 7-битово кодиране понякога се използва за електронна поща, често се счита за остаряла (не е част от Уникод, но е документиран като информационен RFC (Request for Comments)).
  • UTF-8 – 8-битово кодиране с променящи се битове (variable-width encoding), която има максимална съвместимост с ASCII (American Standard Code for Information Interchange) .
  • UTF-EBCDIC – 8-битово кодиране с променящи се битове (variable-width encoding) подобна на UTF-8, но предназначена за съвместимост с EBCDIC (Extended Binary Coded Decimal Interchange Code) - не е част от Уникод.
  • UTF-16 – 16-битово кодиране с променящи се битове (variable-width encoding).
  • UTF- 32 – 32-битово кодиране с фиксирани битове (fixed-width encoding).

UTF-8 използва един до четири байта за шаблон, той е подходящ за латинските букви и ASCII, обезпечава de facto стандарта за обмен на кодировката за Уникод текст. Той се използва от FreeBSD (свободна компютърна операционна система с отворен код) и най-новите Линукс дистрибуции като пряк заместител на утвърдените кодировки за цялостна обработка на текст.

UCS – 2 и UTF- 16 кодировки уточняват The Unicode Byte Order Mark (BOM) за използване при наченките на текстови файлове, които могат да се използват за откриване на байт поръчка.BOM-ът (U+FEFF) има важно свойство за предотвратяване на повторна байт поръчка, независимо от Уникод кодировката която се използва; U+FFFE е специален шаблон за Уникод символ, който не е нито буква, нито символ, нито празно пространство и в комбинация с U+FEFF(когато не е в началото на текста) придава специфично празно пространство без да разделя думите (тоест, видим е само за компютрите и има значение за тях).

UTF-32 и UCS-4 са 32 битови и служат за директно предаване на информация. Другите кодировки могат да представят информацията с различен брой битове, докато те (UTF-32 и UCS-4) работят с точно определени битове – 32. UTF-32 е широко използван в текстообработващите програми. Някои програмни езици използват UTF-32 за представяне на символи (char) и низове от букви и думи (string). В последните версии на Python (след 2.2) се използва UTF-32, заради голямата му прецизност.

Punycode (друг шаблон за кодиране) дава възможност за кодиране на Уникод низове с ограничен набор от символи с помощта на ASCII. Кодирането се използва като част от IDNA, която е система, която позволява използването на интернационализирането на домейн имената във всички скриптове, които се поддържат от Уникод.

GB18030 е друг шаблон за Уникод, който се използва за стандартизация в администрация на Китай. Това е официалната „азбука“ на Китай за компютрите. BOCU -1 и SCSU са Unicode схеми за компресиране.

Стандартни срещу променящи се шаблони[редактиране | редактиране на кода]

Уникод включва механизъм за промяна на формата на шаблона, което значително разширява обема на езиците които се поддържат. Това включва използването на комбиниране на диакритични знаци (combining diacritical marks). Те се добавят отгоре, отдолу или във главният символ. Множество съчетаващи диакритични знаци могат да бъдат подредени в сравнение със същия символ. Уникод съдържа също постсъставни версии на повечето писмо/диакритични комбинации в нормална употреба(например „ǎ“). Това прави преход към и от утвърдените прости кодировки, и позволява на приложенията да използват Уникод като вътрешен текстов формат без да се налага да се прилагат съчетаващи символи. Например „é“, може да бъде представена в Уникод като U +0065 (малката латинска буква „е“), последвано от U + 0301 (запетайката отгоре), но той може да бъде представена като постсъставен символ U + 00E9 (малката латинска буква „е“ директно със запетайка отгоре). По този начин потребителите имат различни начини за кодиране на едни и същи символи. За да се справят с това, Unicode осигурява механизма на каноничната равностойност (canonical equivalence).

Например Hangul, корейската азбука. Уникод осигурява механизъм за компилиране на Hangul срички с индивидуалните им съставни части, известни като Hangul Jamo. Въпреки това, Уникод също така осигурява 11172 комбинации от постсъставни срички, които са от най-често срещаните в Hangul Jamo.

Идеограмите на CJK (Chinese, Japanese, and Korean languages (Китайски, Японски и Корейски)) за момента имат кодове само за техните постсъставни форми. Все пак, повечето от тези идеограми съдържа прости елементи (често наричани радикали на английски език). Това значително намалява броя на необходимите шаблони. Подобна идея се използва от някои други езици, като например Cangjie и Wubi(разновидности на китайския).

Типография [редактиране | редактиране на кода]

Много скриптове, включително арабски и деванагари, имат специални правописните правила, които изискват определени комбинации от букви и изрази да бъдат обединени в специални типографни форми. Правилата, регламентиращи лигатурните (типографни) норми могат да бъдат доста сложни, изискващи специални скриптооформящи технологии като ACE (Арабски калиграфски Engine по DecoType през 1980 г. и се използват за генериране на всички арабски примерите в печатните издания на стандарта Уникод). Инструкциите също са вградени в шрифтове, за да каже на операционната система как правилно да разчита различни последователностите от символи. Въпреки това, възпроизвеждането на някои писмености не е възможно, защото съществуват прекалено големи различия. Например, в тайландският се пише отгоре надолу и се комбинират гласни със символи с различен размер.

Стандартизирани подгрупи[редактиране | редактиране на кода]

Няколко подгрупи на Уникод са стандартизирани: Microsoft Windows, тъй като Windows NT 4.0 поддържа WGL-4 с 652 знака, които се считат за поддръжка на всички съвременни европейски езици, използващи латински, гръцки или кирилица. Други стандартизирани подгрупи на Уникод включват многоезичени европейски подгрупи: MES -1 (от латинските букви – 335 знака), MES -2(на латински, гръцки и кирилица – 1062 знака) и MES- 3A & MES- 3B (две големи подгрупи, които не са показани тук). МЕS -2 включва почти всички символи от MES – 1 и WGL – 4.

WGL-4MES-1 and MES-2
Ред Клетка Обхват
00 20–7E Основна латиница (00–7F)
A0–FF Допълнителна латиница (80–FF)
01 00–13, 14–15, 16–2B, 2C–2D, 2E–4D, 4E–4F, 50–7E, 7F Разширена латиница А (00–7F)
8F, 92, B7, DE-EF, FA–FF Разширена латиница В (80–FF ...)
02 18–1B, 1E–1F Разширена латиница В (... 00–4F)
59, 7C, 92 Разширена фонетична (IPA) (50–AF)
BB–BD, C6, C7, C9, D6, D8–DB, DC, DD, DF, EE Модифицирани букви (B0–FF)
03 74–75, 7A, 7E, 84–8A, 8C, 8E–A1, A3–CE, D7, DA–E1 Гръцка азбука (70–FF)
04 00, 01–0C, 0D, 0E–4F, 50, 51–5C, 5D, 5E–5F, 90–91, 92–C4, C7–C8, CB–CC, D0–EB, EE–F5, F8–F9 Кирилица (00–FF)
1E 02–03, 0A–0B, 1E–1F, 40–41, 56–57, 60–61, 6A–6B, 80–85, 9B, F2–F3 Разширена латиница допълнение (00–FF)
1F 00–15, 18–1D, 20–45, 48–4D, 50–57, 59, 5B, 5D, 5F–7D, 80–B4, B6–C4, C6–D3, D6–DB, DD–EF, F2–F4, F6–FE Гръцка разширена (00–FF)
20 13–14, 15, 17, 18–19, 1A–1B, 1C–1D, 1E, 20–22, 26, 30, 32–33, 39–3A, 3C, 3E Основна пунктуация (00–6F)
44, 4A, 7F, 82 Суперскрипт и означения (70–9F)
A3–A4, A7, AC, AF Валутни символи (A0–CF)
21 05, 13, 16, 22, 26, 2E Символи които съдъжат повече от една буква(Letterlike Symbols) (00–4F)
5B–5E Номерация (50–8F)
90–93, 94–95, A8 Стрелки (90–FF)
22 00, 02, 03, 06, 08–09, 0F, 11–12, 15, 19–1A, 1E–1F, 27–28, 29, 2A, 2B, 48, 59, 60–61, 64–65, 82–83, 95, 97 Математически знаци (00–FF)
23 02, 0A, 20–21, 29–2A Технически символи (00–FF)
25 00, 02, 0C, 10, 14, 18, 1C, 24, 2C, 34, 3C, 50–6C Box Drawing (00–7F)
80, 84, 88, 8C, 90–93 Блокови елементи (80–9F)
A0–A1, AA–AC, B2, BA, BC, C4, CA–CB, CF, D8–D9, E6 Геометрични форми (A0–FF)
26 3A–3C, 40, 42, 60, 63, 65–66, 6A, 6B Символи (00–FF)
F0 (01–02) Неофициални символи (00–FF...)
FB 01–02 Азбучни форми (00–4F)
FF FD Специални

Когато компютърът не може да обработи даден символ, често го показва като U+FFFD или �, за да покаже все пак позицията на непознатия символ.

Внедряване[редактиране | редактиране на кода]

Операционни системи[редактиране | редактиране на кода]

Уникод  се превърна в доминиращата система за вътрешна текстообработка и съхранение на текст. Въпреки че голяма част текст все още се съхранява в утвърдени кодировки, Уникод се използва почти изключително за изграждането на нови системи за обработка на информация. Първите приемници бяха склонни да използват UCS-2 (предшественик на UTF-16 с фиксирана ширина 2 байта) и по късно се прехвърлиха на UTF-16 (настоящият стандарт с променлива ширина) като това беше най-подходящият начин да се добави поддръжка на символи, които не са BMP. Най-добре познатата подобна система е Windows NT (и нейните наследници Windows 2000, Windows XP, Windows Vista и Windows 7) която използва UTF-16 като единствена кодировка за вътрешни символи. Java и .NET байткод среди, MAC OS X и KDE също я използват за вътрешно представяне. Уникод се използва в Windows 95, както и в следващите Windows 98 и Windows ME.

UTF-8 се превърна в основната кодировка на повечето подобни на UNIX операционни системи (макар и други да се използват чрез някои библиотеки), тъй като тя лесно заменя традиционните разширени ASCII набори. UTF-8 е най-често използваната кодировка, използвана в HTML документи в световната мрежа.

Методи за въвеждане[редактиране | редактиране на кода]

Понеже клавиатурната подредба не може да има прости клавишни комбинации за всички символи, няколко операционни системи предлагат алтернативни методи за въвеждане, които позволяват достъп до целия набор.

ISO 14755, който стандартизира методи за въвеждане на Уникод символи от техните кодови точки, задава няколко метода. Има Основен метод, където начална поредица е следвана от шестнадесетичното представяне на кодовата точка и крайната поредица. Налице е също метод за въвеждане чрез избор от екрана, при който символите са разписани в таблица на екрана, например със символна карта.

Електронна поща[редактиране | редактиране на кода]

MIME очертава два различни механизма за кодиране на символи, които не са част от ASCII в електронната поща, в зависимост от това дали символите са в заглавието на електронната поща (например „Тема“) или в тялото на текста на съобщението. В двата случая се идентифицират първоначалния набор от символи, както и преходна кодировка. За предаване на Уникод по електронна поща се препоръчва набор UTF-8, както и Base64 или Quoted-printable преходни кодировки, в зависимост от това дали голяма част от съобщението е съставено от ASCII символи. Подробностите около двата различни механизма са уточнени в стандартите MIME и обикновено остават скрити от потребителите на софтуер за електронна поща.

Внедряването на Уникод в електронна поща е много бавно. Някои източноазиатски текстове все още биват кодирани с кодировки като ISO-2022 и някои устройства, като мобилни телефони все още не могат да работят с Уникод данни правилно. Все пак поддръжката се подобрява. Много от големите безплатни доставчици на услуги като Yahoo, Google (Gmail) и Microsoft (Outlook.com) поддържат Уникод.

Нови редове[редактиране | редактиране на кода]

Уникод частично разглежда проблема с новия ред, който се появява, когато се опитва да се чете от текстов файл на различни платформи. Уникод определя голям брой символи, които приложенията трябва да разпознават като край на ред.

Уникод въвежда U+2028 разделител на редове и U+2029 разделител на абзаци. Това беше опит да се направи Уникод решение, което кодира редовете и абзаците семантично, потенциално замествайки решенията за различните платформи. Правейки така Уникод разрешава историческия проблем с нов ред при различни платформи. Въпреки това малко, ако въобще има такива Уникод решения са приели разделителите на ред и абзац като единствените символи за завършек на ред. Чест подход за решаването на този проблем е нормализирането на нов ред. Това е постигнато в текстовата система Какао в Mac OS X и също с W3C XML и HTML препоръки. При този подход всеки възможен символ за нов ред е конвертиран вътрешно до общ нов ред. С други думи текстовата система може правилно да разглежда символа като нов ред, без значение от кодировката на входящата информация.

Проблеми[редактиране | редактиране на кода]

Критики към философия и завършеност[редактиране | редактиране на кода]

Хан уеднаквяването (идентификацията на форми в източноазиатските езици, които биха могли да се третират като стилистични вариации на един и същ символ) е най-противоречивият аспект на Уникод, въпреки присъствието на множество експерти от всички източноазиатски региони в групата за идеографски доклади, която съветва Уникод консорциума и Международната организация по стандартизация относно добавянe към набора от символи и хан уеднаквяването.

Уникод бива критикуван за факта, че не кодира отделно по-стари и алтернативни форми на Канджи символи което, според критиците, усложнява обработването на старояпоснки и рядко срещани японски имена. Това често се дължи на факта, че Уникод кодира символи вместо глифи. Обединяването на глифите води до усещането, че самите езици, не само символните им представяния, се сливат. Имало е опити да се създаде алтернативна кодировка, която да запази стилистичните разлики между китайските, японските и корейските символи, за разлика от политиката на Уникод за хан уеднаквяване. Пример за такава е TRON, макар и не широко използвана в Япония, бива предпочитана от потребители, на които се налага да боравят с исторически японски текстове.

Ранните версии на Уникод имат набор от по-малко от 21 000 хан символа, което ограничава употребата предимно до съвременна реч. Към 2015-та година Уникод включва над 70 000 символа, като продължава работата по добавяне на още хиляди архаични и диалектни символи, използвани в Китай, Япония, Корея, Тайван и Виетнам.

Съвременните технологии за представяне на шрифтове предоставят потенциални решения на проблема с нуждата от изобразяване на хан символ като набор от алтернативни глифови репрезентации, под формата на селектор на вариации. Например допълнителните типографски таблици на OpenType позволяват да се избере едно измежду набор от алтернативни глиф представяния, когато се извършва процеса картиране на символ към глиф. По този начин в рамките на текста може да бъде предоставена информация, определяща кой алтернативен вариант на символа да се използва.

Букви на кирилица, показани с и без курсив.

Ако разликата в подходящите глифи за дадена писменост е само при изписване с курсив, Уникод в общия случай ги уеднаквява, както може да се види при сравнението между руски и сръбски букви.

Картиране на утвърдени символни набори[редактиране | редактиране на кода]

Уникод е проектиран с идеята да предоставя конверсия тип точка-по-точка към и от всякаква съществуваща кодировка, така, че текстови файлове на остарели машини да могат да се конвертират към Уникод и обратно, получавайки идентичен файл. Това означава, че непостоянни утвърдени архитектури като съчетаване на диакритични символи, както и предварително съчетани символи, съществуват едновременно в Уникод, давайки повече от един начин за изобразяване на даден текст. Това е най-ярко изразено в трите различни кодировки на корейската азбука Хангъл. От версия 3.0 насам, с цел да се запази оперативната съвместимост между софтуер, използващ различни версии на Уникод, символи, които могат да бъдат представени чрез комбиниране на вече съществуващи символи, не се добавят към стандарта.

За да се подсигури конверсия към Уникод и оперативна съвместимост със утвърден софтуер, се налага използването на инективни картирания между съществуващи остарели набори от символи и Уникод символи. Разлики в картирането между ранни японски кодировки и Уникод води до конверсионни несъответствия, като например картирането на символа JIS X 0208 '~' (1-33, WAVE DASH), широко използван в миналото в бази данни, към U+FF5E ~ тилдаMicrosoft Windows) или U+301C 〜 вълнисто тире (при други системи).

Някои японски програмисти са възразявали срещу въвеждането на Уникод, тъй като това би ги принудило да разграничат употребата на U+005C \ (обратна наклонена черта) и U+00A5 ¥ (символ за йена), който е бил картиран към 0x5C в JIS X 0201 и голяма част от утвърдения код е написан по този начин. Разграничението между тези символи съществува в ISO 8859-1, преди появата на Уникод.


Индоарийски азбуки[редактиране | редактиране на кода]

Азбуките на индоарийските езици като тамил и деванагари имат разпределени само 128 кодови точки, също ISCII като при стандарта. Коректното изобразяване на индоарийски текст в Уникод изисква трансформиране на запазената логическа последователност от символи във визуална последователност и формирането на лигатури от компонентите им. Някои местни учени се изказват в полза на възлагае на Уникод кодови точки към тези лигатури, което е в противоречие с практиките на други писмени системи, въпреки че Уникод съдържа някои арабски и други лигатури с цел единствено обратна съвместимост. Кодирането на нови лигатури в Уникод няма да се случи, отчасти защото наборът лигатури е зависим от шрифта, а Уникод е кодировка, независима от шрифтовите вариации. Същите проблеми се появяват и с тибетски (китайската национална организация за стандартизация не успява да постигне аналогична промяна)

Поддръжката на тайски език бива критикувана заради подредбата на буквите. Гласните: เ, แ, โ, ใ, ไ, които се изписват вляво на предшестващата съгласна, са във визуална подредба, вместо фонетична, за разлика от Уникод репрезентациите на други индоарийски писмености. Усложнението се дължи на факта, че Уникод наследява стандарта Thai Industrial Standard 620, който работи по аналогичен начин и е методът по който тайският винаги е бил изписван на клавиатурите. Този проблем при подредбата усложнява подредбата на Уникод символи, защото се налага справка в таблици за преподреждане на тайски букви. Дори Уникод да приеме подреждане по говорима реч, пак би било проблематично да се подреждат думите в речников ред, Например думата แสดง ("изпълнявам") започва със сричката "สด" (със слята гласна към съгласната "ส"), гласната แ-, в говорим ред, би била след съгласната ด, но в речник, думата би била наредена както е написана, с гласната след ส.

Съчетаване на символи[редактиране | редактиране на кода]

Буквите диакритични знаци могат да бъдат представени или като предварително съчетани символи, или като последователност несъчетани символи, състоящи се от основна буква и един или повече допълнителни знаци, непоставящи интервал. Например, (предварително съчетано с макрон и акут) и ḗ ("е", следвано от символите за макрон и акут) би следвало да се представят идентично. На практика обаче тяхното представяне може да се различава в зависимост от използвания шрифт и програмата, която изобразява буквите. Аналогично диакритичната точка, нужна за латинизация на индоарийски езици понякога бива поставяна некоректно. Този проблем може да се избегне чрез използване на Уникод символи, които се картират към предварително съчетани глифи, но, когато такива липсват, проблемът може да се реши като се използват специални Уникод шрифтове като Charis SIL, OpenType или технологии с допълнителни опции за изобразяване, като програмите за типография на Апъл.

Някои примери за практическо използване[редактиране | редактиране на кода]

  • Страниците в Уикипедия са кодирани в Уникод и могат да съдържат символи от всички азбуки; читателят има нужда от браузър, отговарящ на стандартите (повечето браузъри, публикувани след 1999 поддържат Уникод) и съответния набор знаци в шрифтовете си.
  • По-новите файлови системи като свободните ext3, ReiserFS, Reiser4, XFS и JFS, както и несвободната NTFS кодират файловите имена с Уникод. Тоест – ако дяловете на даден хард диск са форматирани с тези файлови системи и са коректно прикачени, имената на файловете и папките могат да включват знаци от различни азбуки, както и небуквени символи (например ☯ ☭ ⅞ ³ ☿)независимо от регионалните настройки, и ще бъдат правилно прочетени от всяка програма, четяща уникод.

Външни препратки[редактиране | редактиране на кода]

Източници[редактиране | редактиране на кода]

  1. „The Unicode Standard: A Technical Introduction“. Retrieved 2010-03-16. (Английски)
  2. „Summary Narrative“. Retrieved 2010-03-15. (Английски)
  3. Becker, Joseph D. (August 29, 1988). „Unicode 88“ (PDF).
  4. Searle, Stephen J. „Unicode Revisited“. Retrieved 2013-01-18. (Английски)
Криейтив Комънс - Признание - Споделяне на споделеното Лиценз за свободна документация на ГНУ Тази страница частично или изцяло представлява превод на страницата „Unicode“ в Уикипедия на английски. Оригиналният текст, както и този превод, са защитени от Лиценза „Криейтив Комънс - Признание - Споделяне на споделеното“, а за съдържание, създадено преди юни 2009 година — от Лиценза за свободна документация на ГНУ. Прегледайте историята на редакциите на оригиналната страница, както и на преводната страница. Вижте източниците на оригиналната статия, състоянието ѝ при превода, и списъка на съавторите.