- Уникод додељује јединствену кодну тачку сваком знаку и синхронизује његов репертоар са ISO/IEC 10646.
- UTF-8, UTF-16 и UTF-32 кодирају исте знакове и омогућавају конверзију без губитака.
- Нормализација, Bidi и UCD својства обезбеђују доследно поређење, уређивање и рендеровање.
- Усвајање Уникода (пожељно UTF-8 на вебу) спречава корупцију и олакшава интернационализацију.
Уникод је заједнички језик који рачунари користе када обрађују текст : он додељује јединствени број сваком знаку и симболу, из скоро сваког система писања, тако да се може без проблема чувати, обрађивати и делити између платформи и земаља.
Овај стандард је настао како би превазишао ограничења старих скупова знакова ( ASCII скуп , кодне странице, EBCDIC итд.), који нису били довољни или су били некомпатибилни једни са другима, а данас је синхронизован са ISO/IEC 10646, одржава алгоритме (као што је двосмерни) и дефинише својства и правила нормализације тако да све ради конзистентно.
Шта је Уникод и зашто је толико важан?
Уникод је универзални и стално еволуирајући стандард за кодирање знакова који описује сваки знак именом, кодном тачком и скупом својстава (писмо, категорија, смер, велика и мала слова итд.). Технички комитет Уникода (UTC), у оквиру Уникод конзорцијума, одржава га синхронизованим са стандардом ISO/IEC 10646.
Његов циљ је универзалност, једнообразност и јединственост : широк репертоар који омогућава недвосмислену размену вишејезичног текста, са јасним и репродуцибилним правилима. Захваљујући томе, модерне технологије (оперативни системи, прегледачи, XML, Јава, базе података) могу да комбинују латинична и арапска писма, идеограме CJK, емоџије и техничке или музичке симболе у истом документу.
Знакови, глифови и кодне тачке
У Уникоду, знак је апстрактна јединица информације, а кодна тачка је њен нумерички идентификатор . Глиф је визуелни облик (оно што видите на екрану), који зависи од фонта . Један знак може имати више глифова, а понекад глиф представља више од једног знака.
Уобичајена нотација за кодну тачку је U+XXXX у хексадецималном систему . Илустративни примери из анализираног материјала: мало слово 'l' је U+006C, унапред састављено мало слово 'ü' је U+00FC, 'é' је U+00E9 и грчка бета: велико слово је U+0392, а мало слово U+03B2 (у неким текстовима 'β' се наводи са U+0392, али тај код одговара великом слову 'Β').
Уникод кодни простор има 1.114.112 могућих позиција (до U+10FFFF) , организованих да покрију и класификују све системе писања и симболе, са десетинама хиљада ефективних и растућих додела у свакој верзији.
Планови, подручја и блокови
Уникод дели свој простор знакова на 17 равни, од којих свака има до 65.536 кодних тачака . Ова организација олакшава груписање повезаних списа и симбола и брзо проналажење онога што тражите.
Најрелевантније равни : Основна вишејезична раван (BMP, раван 0) обједињује скоро све модерне азбуке и многе симболе; Додатна вишејезична раван (SMP, раван 1) чува историјска писма и техничке симболе (нпр. музичке и математичке); Додатна идеографска раван (SIP, раван 2) проширује идеограме CJK; раван 14 (SSP) укључује посебне ознаке; а равни 15 и 16 су за приватну употребу.
Блокови и области : мапе су неформално подељене на области, а формално на суседне блокове. Блокови се користе за табеларно приказивање и документовање знакова, иако не одговарају увек смисленим језичким групама.
Идеограми ЦЈК и пројекат Унихан
Источноазијски (Хан) идеограми су обједињени у Уникоду са стилским варијацијама по регионима , али сви се односе на исти апстрактни карактер. Њиме управља Група за идеографске известитеље (IRG), група ISO/IEC JTC1/SC2/WG2 са представницима Кине, Јапана, Кореје, Вијетнама, Хонг Конга, Макаа, Сингапура, САД и других.
База података Унихан обједињује помоћне информације (читања, значења, еквиваленције) неопходне за руковање овим идеограмима на различитим језицима и историјским или корпоративним стандардима.
Главни CJK блокови и проширења :
- Уједињени идеограми ЦЈК (БМП, У+4Е00–У+9ФФФ)20.992 често коришћених карактера.
- Проширење А (BMP, U+3400–U+4DBF)6.592 ређих идеограма.
- Б–Х екстензије: у SMP/SIP/TIP, они се сабирају и до десетина хиљада више (B: U+20000–U+2A6DF, 42.720; C: U+2A700–U+2B73F, 4.154; D: U+2B740–U+2B81F, 222; E: U+2B820–U+2CEAF, 5.762; F: U+2CEB0–U+2EBEF, 7.473; G: U+30000–U+3134F, 4.939;
- Остали повезани CJK блоковиКангси радикали (U+2F00–U+2FDF), ЦЈК симболи и интерпункција (U+3000–U+303F), компатибилност и формати компатибилности, додатак идеограму компатибилности итд.
Уникод предвиђа да укључивање идеограма неће имати апсолутни крај и разматра механизме као што су идеографски описни низови за представљање некодираних симбола њиховим разлагањем на постојеће компоненте (уз упозорења: без канонске декомпозиције или гаранција у операцијама као што су претраживање или уређивање).
Облици кодирања: UTF-8, UTF-16 и UTF-32
Уникод дефинише облике трансформације (UTF) који конвертују кодне тачке у јединице за складиштење тако да софтвер може ефикасно обрађивати текст у складу са његовим контекстом.
UTF-8 је формат кодирања променљиве дужине, оријентисан на бајтове, који је ASCII компатибилан у опсегу U+0000–U+007F у једном бајту. Тренутни стандард користи 1 до 4 бајта по знаку; неки старији текстови помињу 1–6, али у модерном Уникоду то је 1–4. То је доминантан формат на вебу.
UTF-16 користи 16-битне јединице
(једна или две кодне јединице по знаку) : већина BMP знакова стаје у једну јединицу; допунски знакови користе сурогат парове у опсегу U+D800–U+DFFF.
UTF-32 је фиксне дужине: 4 бајта по карактеру, једноставан, али заузима много простора; користан када је директно индексирање карактера важно, а меморија није проблем.
Како се битови дистрибуирају у UTF-8
UTF-8 формат дистрибуира битове кодних тачака у секвенце од 1 до 4 бајта са препознатљивим заглављима, што избегава двосмислености и олакшава откривање граница карактера.
| Уникод опсег | Битни образац | бајтова |
|---|---|---|
| У+0000..У+007Ф | КСНУМКСккккккк | 1 |
| У+0080..У+07ФФ | 110yyyyy 10xxxxxx | 2 |
| У+0800..У+ФФФФ | 1110zzzz 10yyyyyy 10xxxxxx | 3 |
| У+010000..У+10ФФФФ | 11110uuu 10uuuzzzz 10yyyyyy 10xxxxxx | 4 |
Кључна предност UTF-8 је то што избегава проблеме са редоследом бајтова (endianness) и омогућава веома ефикасну обраду текстуалних токова, поред тога што је уназад компатибилан са ASCII.
Шеме кодирања, ендијански распоред и BOM
Поред UTF облика, Unicode описује шеме серијализације које решавају како се бајтови преносе између система са различитим endian-ом и како се сигнализирају аспекти као што је редослед бајтова.
- УТФ-КСНУМКС: ендијански редослед се не примењује. Може се преносити Ознака редоследа бајтова (BOM) као назнака, иако није обавезна нити препоручена подразумевано.
- УТФ-КСНУМКСBE/LE (big/little-endian) варијанте и опциони BOM (ако недостаје и није дефинисано протоколом, претпоставља се big-endian).
- УТФ-КСНУМКС: BE/LE варијанте са аналогним правилима; BOM дозвољен као ознака поруџбине.
Постоје и специфичне варијанте као што су UTF-16BE/UTF-16LE и UTF-32BE/UTF-32LE (без BOM-а по конвенцији), и друга историјска компатибилна кодирања као што су UTF-7 или UTF-EBCDIC, поред GB18030 (кинески еквивалент UTF-8 са подршком за поједностављени и традиционални кинески).
Нормализација, композиција и еквиваленције
Многи знакови могу бити представљени као унапред састављени или као низови основе + комбинујућих знакова . Класични примери из ревидираног материјала: унапред састављени 'Ä' је U+00C4, док је декомпоновани облик 'A' (U+0041) + дијареза (U+0308). Вијетнамски 'ỗ' може бити представљен као 'o' (U+006F) + циркумфлекс (U+0302) + тилда (U+0303).
Уникод дефинише стандардизоване облике и две врсте еквиваленције : канонску (исти суштински садржај) и компатибилност (облици који могу изгледати исто, али имају семантичке разлике). Стандардизација обезбеђује поуздано поређење низова и смањује дуплирање.
Двосмерни алгоритам и специјални знакови
За писма која се пишу здесна налево, као што су арапски или хебрејски, Уникод укључује стандардизовани и еволуирајући двосмерни алгоритам (Bidi) (нпр. ревизије у верзији 6.3), тако да су мешовити текстови са латиничним и арапским писмом представљени исправним визуелним редоследом.
Класе кодних тачака које треба знати према примљеном материјалу: графички знакови (слова, знаци, симболи), форматирање (невидљиви знакови који утичу на обраду: U+2028 прелом реда, U+2029 прелом пасуса, U+00A0 тврди размак), наслеђени контролни кодови за компатибилност (опсези U+0000–U+001F, U+007F, U+0080–U+009F), приватна употреба, резервисане позиције, замене (U+D800–U+DFFF за UTF-16) и некарактери (U+FFFE, U+FFFF у свакој равни).
Unicode, ISO/IEC 10646 и други стандарди (ASCII, ANSI, кодне странице)
Уникод је синхронизован са ISO/IEC 10646 (UCS) и задржава мапирања на претходне стандарде (ASCII, ISO 8859-1, ANSI Z39.64, JIS X 0208, KS X 1001, GB 2312, GB 18030, HKSCS, CNS 11643, итд.), поред резервисања простора за приватну употребу од стране произвођача.
ASCII наспрам Unicode-а : ASCII је 7-битни скуп знакова са 128 знакова , довољан за основни енглески језик, али недовољан за језике са дијакритичким знацима, идеограмима или емоџијима . Unicode покрива више од 140.000 знакова и наставља да расте, са 8/16/32-битним кодирањем према UTF-12 формату.
ANSI и кодне странице : „ANSI“ се обично односи на ограничене и међусобно некомпатибилне 8-битне Windows кодне странице. Рачунар који користи OEM-Latin II и отвара текст у IBM EBCDIC-ћирилици видеће погрешне знакове. Unicode превазилази овај проблем једним скупом знакова и конверзијама без губитака између сопствених облика.
Имплементација на системима (Windows, Solaris) и конверзија
Виндоус интерно користи UTF-16 за своје модерне API-је и нуди функције као што су MultiByteToWideChar и WideCharToMultiByte за конвертовање између Unicode и кодних страница (SBCS/DBCS/MBCS). Ако сте приморани да конвертујете у кодну страницу, може доћи до губитка података ако она не може да представи све знакове.
Нове апликације на Windows-у треба да користе UTF-16 интерно и да конверзију оставе на рубовима рачунара (I/O, протоколи), минимизирајући оштећења. Упркос томе, Windows одржава компатибилност са кодним страницама када је то неизбежно.
Oracle Solaris 11, према ревидираној документацији, подржава Unicode 6.0 и ISO/IEC 10646:2011 на системском нивоу, користећи UTF-8 као подразумевани формат у својим скуповима параметара, што штеди проблеме са уређивањем бајтова и транспарентно чува ASCII.
Уникод у пракси: Веб, документи и програмирање
На вебу је уобичајено да се садржај приказује и чува у UTF-8 кодирању . У HTML-у, декларишите '<meta charset="UTF-8">' да бисте осигурали компатибилност и користите хексадецималне нумеричке ентитете када је потребно (пример: евро '€').
У програму Word можете лако уметнути Unicode симболе постављањем курсора, одласком на Insert > Symbol или укуцавањем кода и притиском на Alt+X; ово претвара вредност у њен карактер, пратећи стандардне процедуре. Погледајте и листу Alt кодова за уметање симбола са тастатуре.
У програмским језицима : у Пајтону 3, стрингови су већ Уникод; у Јави и C#, можете користити излазне карактере '\uXXXX'; у HTML-у, '&#xXXXX;'. Важно је да уређивање, компајлирање и пренос користе исто кодирање како би се избегле грешке.
Копирање и лепљење симбола функционише ако је цео стринг у Уникоду . Ако делови користе другачије кодирање, могу се појавити упитници, квадратићи или други чудни симболи.
База података карактера (UCD), својства и категорије
База података карактера Уникода (UCD) објављује, за сваку кодну тачку, њено име, категорију, писмо, својства великих и малих слова, смер и друге карактеристике . Ове информације су од виталног значаја за исправно функционисање система за рендеровање и обраду текста.
Захваљујући овим својствима , различите компоненте и алгоритми (као што су сортирање, сегментација речи или трансформација великих/малих слова) могу се понашати конзистентно са истим подацима.
Верзије и проширења стандарда: најважније
Уникод расте са сваком верзијом , укључујући нова писма, симболе и емоџије. Кључне прекретнице укључују верзију 1.0 из 1991. године са 7.161 знаком и накнадна проширења која су додата на хиљаде нових симбола, идеограма, емоџија и писма.
На пример, 2022. године , верзија 15.0 је додала 4.192 додатних идеограма CJK и других елемената, достигавши приближно 149.186 знакова.
Алати за истраживање Unicode табеле
Постоје бесплатни алати за претрагу и анализу знакова : Unibook Character Browser, SYMBL и Branah.com вам омогућавају да претражујете својства, имена и блокове знакова, што програмерима и креаторима садржаја олакшава брзо проналажење потребних информација.
Случајеви употребе: обрасци адреса, интернационализација и пословање
Омогућавање корисницима да уносе адресе на свом језику и писму помаже у смањењу грешака и побољшању корисничког искуства. Поред тога, интероперабилност Уникода спречава проблеме са конверзијом између различитих система, одржавајући интегритет текста у целом дигиталном ланцу.
Из тог разлога, Уникод је основни елемент који осигурава да текст остане коначан у целој дигиталној инфраструктури , од веб образаца до система база података и штампаних докумената, без обзира да ли користите „ñ“, арапски, кинески или емоџије у истој реченици.