Уникод е стандард во компјутерската индустрија за доследно кодирање, претставување и ракување со текстови, изразени во повеќето од светските системи за пишување. Најновата верзија содржи збирка од 136.755 знаци, кои опфаќаат 139 современи и историски скрипти, како и повеќе сетови од симболи. Стандардот Уникод се одржува во врска со ISO/IEC 10646, и обата се код-за-код идентични.
Уникод стандардот се состои од колекција на код графикони за визуелна презентација, метод на кодирање и колекција на стандардни знаци за кодирање, колекција од референтни датотеки со податоци и голем број поврзани елементи, како што се својствата на знакот, правилата за нормализација, декомпозицијата, споредувањето, рендерирањето и двонасочниот ред на прикажување (за правилно прикажување на текст кој ги содржи и двата вида на системи за пишување, од десно кон лево системот за пишување, како што е арапското и хебрејското и од лево кон десно системот за пишување). Од јуни 2017 година, најновата верзија е Уникод 10.0. Стандардот го одржува Уникод конзорциумот.
Успехот на Уникод во обединувањето на колекциите од знаци, довел до негова широка распространетост и примарна употреба во интернационализацијата и локализацијата на компјутерскиот софтвер. Стандардот бил имплементиран во многу нови технологии, вклучувајќи ги и модерните оперативни системи, XML, Јава (и други програмски јазици) како и .NET Framework.
Уникодот може да биде имплементиран со различни знаци за кодирање. Уникод стандардот ги дефинира UTF-8, UTF-16 и UTF-32, како и неколку други кодирања кои се во употреба. Најчесто користени кодирања се UTF-8, UTF-16 и UCS-2, претходникот на UTF-16.
UTF-8, доминантно користен од мрежните места (преку 90%), користи еден бајт за првите 128 кодни точки, и најмногу до 4 бајти за другите знаци. Првите 128 Уникод точки се ASCII знаци, што значи дека секој ASCII текст, е исто така и UTF-8 текст.
UCS-2 користи два бајта (16 бита) за секој знак, но може да ги кодира првите 65.536 кодни точки, т.н. Основно Повеќејазично Ниво (ОПН). Со 1.114.112 кодни точки на 17 нивоа што се можни, и со над 137.000 кодни точки дефинирани досега, многу Уникод знаци се надвор од дофатот на UCS-2. Затоа UCS-2 е застарен, иако сè уште се користи во софтверот. UTF-16 го проширува UCS-2, користејќи го истото 16-битно кодирање како и UCS-2 за Основното Повеќејазично Ниво и 4-бајтно кодирање за другите нивоа. Сè додека не содржи кодни точки во задржаниот опсег U+0D800-U+0DFFF, UCS-2 текстот е важечки UTF-16 текст.
UTF-32 (исто така се нарекува и UCS-4) користи четири бајти за секој знак. Како и UCS-2, бројот на бајти по знак е фиксен, олеснувајќи го индексирањето на знаците; но за разлика од UCS-2, UTF-32 може да ги кодира сите Уникод кодни точки. Меѓутоа, бидејќи секој знак користи четири бајти, UTF-32 зема значително повеќе простор во однос на другите кодирања, и не е широко користен.
Потекло и развој Уникод има експлицитна цел да ги надмине ограничувањата на традиционалните кодирања на знаци, како што се оние дефинирани со стандардот ISO 8859, кои нашле широка примена во разни држави во светот, но останале во голема мера некомпатибилни едни со други. Многу традиционални кодирања на знаците делат заеднички проблем, во тоа што овозможуваат двојазична сметачка обработка (обично се користат латинските знаци и месните знаци), но не и повеќејазична сметачка обработка (обработка на произволни пишувања помешани едни со други).
Уникод, тенеденциозно, ги кодира фундаменталните знаци - графемите и графемите како единици - наместо варијабилните хиероглифи (рендерирање) за такви знаци. Во случај на кинески знаци, ова понекогаш доведува до контроверзии околу разликувањето на основниот знак од неговите варијанти на хиероглифите (види унифицирање на Хан).
При обработка на текст, Уникод ја презема улогата да обезбеди единствена кодна точка- број, а не хиероглифа-за секој знак. Со други зборови, Уникод го претставува знакот на апстрактен начин и го остава визуелното рендерирање (големина, облик, фонт или стил) на друг софтвер, како што е пребарувачот или текстуалниот процесор. Сепак, оваа едноставна цел станува комплицирана, поради компромисите направени од дизајнерите на Уникод, со надеж дека ќе го поттикнат побрзото усвојување на Уникод.
Првите 256 кодни точки биле направени идентични со содржината на ISO-8859-1, со цел да се направи неважно претворањето на постоечкиот западен текст. Многу суштински идентични знаци биле кодирани многупати во различни кодни точки, за да се зачуваат разликите што се користат од наследените кодекси, па затоа овозможуваат претворање од тие кодирања во Уникод (и обратно), без губење на какви било информации. На пример, секцијата "неспоредливи форми" на кодните точки ја опфаќа целата латинска азбука, која е одделена од секцијата на главната латинска азбука, затоа што во кинеските, јапонските и корејските (КЈК) фонтови, овие латински знаци се рендерирани со иста широчина како КЈК идеографите, наместо на половина широчина. За други примери, видете во дупликат знаци во Уникод.
Историја Врз основ на искуствата со Ксерокс Знак Код Стандардот (XCCS) од 1980 година, потеклото на Уникод датира од 1987 година, кога Џо Бејкер од Ксерокс, со Ли Колинс и Марк Дејвис од Епл, започнале да ја истражуваат практичноста за создавање на универзална колекција од знаци. Со дополнителен придонес од страна на Питер Фенвик и Дејв Опстад, Џо Бекер објавил нацрт-предлог за "меѓународен/повеќејазичен систем за кодирање на текстуалните знаци, во август 1988 година, условно наречен Уникод". Тој објаснил дека "името ’Уникод’ има за цел да укажува на уникатно, унифицирано, универзално кодирање".
Во овој документ, наречен Уникод 88, Бекер го изложил 16-битниот модел за знаци:Уникод има за цел да одговори на потребата од практично, сигурно кодирање на светски текст. Уникод грубо може да биде опишан како "широк ASCII", кој бил проширен на 16 бита, за да ги опфати знаците на сите светски живи јазици. Со соодветен инженерски дизајн, 16 бита по знак, е повеќе од доволен за оваа намена.Неговиот оригинален 16-битен дизајн бил втемелен на претпоставката дека само овие пишувања и знаци во современа употреба би требало да бидат кодирани:Уникод дава повисок приоритет во обезбедувањето на корисност за иднината, отколку за зачувување на минатите антиквитети. Уникод е фокусиран, во прв ред, на знаците објавени во современиот текст (на пример, во сојузот на сите весници и списанија печатени во светот во 1988 година), чиј број е несомнено далеку под 214 = 16,384. Надвор од овие знаци за модерна употреба, сите други можат да бидат дефинирани како застарени или ретки; овие се подобри кандидати за регистрација за приватна употреба, отколку за загрозување на јавниот список на генерално корисни Уникодови.Во почетокот на 1989 година, работната група на Уникод се проширила со вклучувањето на Кен Вистлер и Мајк Кернаген од Метафора, Карен Смит-Јошимура и Џоен Алипренд од РЛГ, како и Глен Врајт од Сан Микросистемс, а во 1990 година на групата се приклучиле Мишел Суигнерд и Асмус Фрајтаг од Мајкрософт како и Рик МекГовен од Некст. До крајот на 1990 година, најголем дел од работата за мапирање на постоечките стандарди за кодирање на знаците била завршена, а бил подготвен и конечниот преглед на нацртот на Уникод.
На 3 јануари 1991 година во Калифорнија бил инкорпориран Конзорциумот на Уникод, а во октомври 1991 година бил издаден првиот том од стандардот Уникод. Вториот том, кој ги опфаќал идеограмите на Хан, бил објавен во јуни 1992 година.
Во 1996 година бил имплементиран заменски механизам за знаци во Уникод 2.0, така што Уникод повеќе не бил ограничен на 16 бита. Со тоа се зголемил просторот за кодови во Уникод, на повеќе од еден милион кодни точки, со што се овозможило кодирање на многу историски пишувања (на пример, египетските хиероглифи) и илјадници ретко користени или застарени знаци, кои не биле предвидени за кодирање. Помеѓу знаците кои првично не биле наменети за Уникод, се ретко користените Канџи или Кинеските знаци, многу од нив се дел од лични имиња и имиња на места, што ги прави ретко користени, но многу повеќе од круцијални, отколку што било предвидено во оригиналната архитектура на Уникод.
Мајкрософт ТруТајп спецификацијата, верзија 1.0 од 1992, го користела името Епл Уникод наместо Уникод за Платформата ИД во табелата за именување.
Архитектура и терминологија Уникод дефинира простор за кодови од 1,114,112 кодни точки во опсегот 0hex до 10FFFFhex. Нормално, Уникод кодната точка се наведува во системот за пишување "U+" проследена со нејзиниот хексадецимален број. За кодни точки во Основното Повеќејазично Ниво (ОПН), се користат четири цифри (на пример, U+0058 за знакот ЛАТИНИЧНА ГОЛЕМА БУКВА X); а за кодни точки надвор од ОПН, се користат пет или шест цифри, како што се бара (на пример, U+E0001 за знакот ЈАЗИЧЕТО ЈАЗИК и U+10FFFD за знакот ЗНАК ЗА ПРИВАТНа УПОТРЕБА -10FFFD).
Нивоа на кодни точки и блокови Кодниот простор на Уникод е поделен на седумнаесет нивоа, нумерирани од 0 до 16:
До сите кодни точки во ОПН се пристапува со единечна кодна единица во UTF-16 кодирањето, а може да биде кодирана во еден, два или три бајти во UTF-8. До кодните точки во нивоата од 1 до 16 (дополнителни нивоа) се пристапува со заменски парови во UTF-16, а кодирани во четири бајта во UTF-8.
Во рамките на секое ниво, знаците се распределени во рамките на именуваните блокови со поврзани знаци. Иако блоковите се со произволна големина, тие секогаш се производ од 16 кодни точки, а често и производ од 128 кодни точки. Знаците потребни за дадените системи за пишување можат да се прошират преку неколку различни блокови.
Општи својства на категоријата Секоја кодна точка има единечно својство на Општата категорија. Главните категории се означени: Буква, Ознака, Број, Интерпункција, Симбол, Сепаратор и друго. Во рамките на овие категории, постојат и под-категории. Во повеќето случаи, мора да се користат други својства за доволно да се специфицираат знацистиките на кодната точка. Можните oпшти категории се:
Кодните точки во опсегот U+D800-U+ DBFF (1.024 кодни точки) се познати како високозаменски кодни точки, а кодните точки во опсегот U+DC00–U+DFFF (1.024 кодни точки) се познати како нискозаменски кодни точки. Високо заменските-кодни точки, по кои следат ниско заменски-кодни точки, во UTF-16 формираат заменски пар, за да ги претстават кодните точки поголеми од U+FFFF. Овие кодни точки поинаку не можат да бидат користени (ова правило е често игнорирано во праксата, особено кога не се користи UTF-16).
Мала колекција на кодни точки е загарантирана никогаш да не се користат за кодирање на знаци, иако апликациите можат да ги користат овие кодни точки интерно ако сакаат. Постојат шеесет и шест од овие не-знаци: U+FDD0-U+FDEF и било која кодна точка која завршува во вредноста FFFE или FFFF (т.е. U+FFFE, U+FFFF, U+1FFFE, U+1FFFF, ... U+10FFFE , U+10FFFF). Колекцијата од не-знаци е постојана, а нови не-знаци нема да бидат некогаш дефинирани. Правилото дека тие не можат да бидат користени, како заменски, често се игнорира, иако операцијата за означување на редоследот на бајти претпоставува дека U+FFFE никогаш нема да биде првата кодна точка во текстот.
Ако се исклучат заменските и не-знаците остануваат 1,111,998 кодни точки достапни за користење.
Кодните точки за приватна употреба се сметаат дека се доделени знаци, но тие немаат толкување специфицирано според Уникод стандардот, па секоја размена на такви знаци бара договор помеѓу испраќачот и примачот за нивното толкување. Во кодниот простор на Уникод постојат три области за приватна употреба:
Површина за приватна употреба: U+E000-U+F8FF (6.400 знаци) Дополнителна површина за приватна употреба-A: U+F0000-U+FFFFD (65.534 знаци) Дополнителна површина за приватна употреба -Б: U+100000–U+10FFFD (65.534 знаци).
Графички знаци се знаците дефинирани од страна на Уникод, за да имаат специфична семантика и да имаат или видлива форма на глиф или да претставуваат видлив простор. Од Уникод 10.0 има 136.537 графички знаци.