Уникод

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Уникод дава по-висок приоритет на осигуряването на използваемост и полезност за в бъдеще, отколкото на опазването на отминали антики. Уникод има за своя цел на първо място символите, публикувани в съвременен текст (например във всички вестници и списания, отпечатани в света през 1988 г.), чийто брой е несъмнено много под 2^14 = 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 година и продължава да развива стандарти базирани именно на него. Последната версия на стандарта, а именно Уникод 8.0, e пуснат през Юни 2015 година и е достъпен на уеб сайта на консорциума. Последната от по-големите версии (версия x.0), която е публикувана под формата на хартиен носител е Уникод 5.0 (ISBN 0-321-48091-0). След Уникод 6.0 обаче стандартът повече не е публикуван на хартиен носител. Единствено, през 2012 година е обявено, че основната спецификация на Уникод 6.1 ще бъде достъпна и ще има възможност за принтиране в 692 страници. За разлика от другите по-големи версии достъпни на хартиени носители, спецификацията на Уникод 6.1 не включва таблици и стандартен анекс. Целият стандарт, включително и основната спецификация, е достъпен безплатно на уебсайта на Уникод.

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

Уникод версии
Версия Дата Книга Съответен ISO/IEC 10646 Edition Скриптове Символи
Общо Важни допълнения
1.0.0 Октомври 1991 ISBN 0-201-56788-1(Vol.1) 24 7,161 Появяват се Арабски, Арменски, Бенгалски, Бопомофо, Кирилица, Деванагари, Джорджиански, Гръцки и Коптик, Гуджарати, Гурмуки, Хангул,Хебрю, Хирагана, Каннада, Катакана, Лао, Латински, Малаям, Ория, Тамил, Телугу, Тайландски и Тибетски.
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 Добавени са нови 4,306 Хангул срички към останалите 2,305. Премахнат е Тибетският.
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 Добавени са Кипърски срички, Лимбу, Линеар, Османия, Шавиан, Таи Ле, Угаритик, както и хексаграмни символи.
4.1 Март 2005 ISO/IEC 10646:2003 плюс изменение 1 59 97,720 Добавени са Бугенезийски, Глаголица, Карощни, Ню Таи Люе, стар Персийски, Силоти Нагри, Тифинаг и Коптик е премахнат от Гръцкия. Добавени са още Старогръцки числа и музикални символи.9]
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 Добавени са Авестан, Бамум, Египетски йероглифи (1,071 символа), Империал Арамаик, Пахлави, Паршиан, Каити, Лису, Меетей Майек, стар южен Арабски, стар Туркик, Самаритански, Таи Там и Таи Виет. Добавени са още 4,149 нови 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 Добавени са Баса Ва, Кауказиански Албански, Дуплоян, Елбасан, Гранта, Койки, Худавиди, Линеар А, Махаяни, Манихайен, Менде Кикакуй, Моди, Мро, Набетански, стар Северен Арабски, стар Пермик, Падау Хмонг, Палмирски, Пау Цин Хау, Псалтер Пахлави, Сиддам, Тирхута, Варанг Цити и Дингбатс.
8.0 Юни 2015 ISO/IEC 10646:2014 плюс изменение 1, както и знакът на Лари, 9 CJK идеографа и 41 нови емоджита. 129 120,737 Добавени са Ахом, Анадолски йероглифи, Хатран, Мултани, стар Унгарски, знаково писане, 5,771 CJK идеографи, пакет от малки букви за Чероки и 5 различни цвята за кожата на емоджитата.

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

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

В последната версия на Уникод са включени общо 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 (свободна компютърна операционна система с отворен код) и най-новите Linux дистрибуции като пряк заместител на утвърдените кодировки за цялостна обработка на текст.

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 година — от Лиценза за свободна документация на ГНУ. Прегледайте историята на редакциите на оригиналната страница, както и на преводната страница. Вижте източниците на оригиналната статия, състоянието ѝ при превода, и списъка на съавторите.