Unicode

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită pe 16 august 2022; verificările necesită 8 modificări .

Unicode [1] ( Eng.  Unicode ) este un standard de codificare a caracterelor care include semne ale aproape tuturor limbilor scrise ale lumii [2] . Standardul este în prezent cel dominant pe Internet .

Standardul a fost propus în 1991 de către organizația non-profit Unicode Consortium (Unicode Inc. ) [ 3] [4] .  Utilizarea acestui standard face posibilă codificarea unui număr foarte mare de caractere din diferite sisteme de scriere: în documente codificate conform standardului Unicode, hieroglife chinezești , simboluri matematice, litere ale alfabetului grecesc , alfabet latin și chirilic , simboluri muzicale. notația și schimbarea paginii de cod devin inutilă [5] .

Standardul constă din două părți principale: un set de caractere universal ( ing.  Setul de caractere universal, UCS ) și o familie de codificări ( ing.  Formatul de transformare Unicode, UTF ). Setul de caractere universal enumeră caracterele permise de standardul Unicode și atribuie fiecărui caracter un cod ca un întreg nenegativ, scris de obicei cu notație hexazecimală prefixată cu U+, cum ar fi U+040F. O familie de codificare definește modul în care codurile de caractere sunt convertite pentru transmisie într-un flux sau fișier.

Codurile din standardul Unicode sunt împărțite în mai multe zone. Zona cu codurile U+0000 până la U+007F conține caractere din setul ASCII , iar aceste coduri de caractere se potrivesc cu codurile lor ASCII. Urmează zonele de simbol ale altor sisteme de scriere, semnele de punctuație și simbolurile tehnice. Unele dintre coduri sunt rezervate pentru utilizare viitoare [6] . Sub caractere chirilice sunt alocate zone de caractere cu coduri de la U + 0400 la U + 052F, de la U + 2DE0 la U + 2DFF, de la U + A640 la U + A69F (vezi chirilic în Unicode ) [7] .

Context pentru crearea și dezvoltarea Unicode

Unicode este un cod unic pentru orice caracter, indiferent de platformă, indiferent de program, indiferent de limbă.Consorțiul Unicode [8]

Până la sfârșitul anilor 1980, codificările pe 8 biți au devenit standard, existau deja un număr mare de ele, iar altele noi apăreau în mod constant. Acest lucru s-a datorat atât extinderii gamei de limbi acceptate, cât și dorinței de a crea codificări parțial compatibile între ele (un exemplu tipic este apariția unei codificări alternative pentru limba rusă , datorită exploatării programelor occidentale ). creat pentru codificarea CP437 ). Ca urmare, au apărut mai multe probleme:

  1. problema decodării incorecte;
  2. problema limitării setului de caractere;
  3. problema conversiei unei codificări în alta;
  4. problema de duplicare a fonturilor.

Problema decodării incorecte a  provocat apariția în document a caracterelor limbilor străine care nu au fost destinate în document sau apariția unor caractere pseudo -grafice care nu au fost destinate, poreclit de utilizatorii vorbitori de limbă rusă „krakozyabry”. Problema a fost cauzată în mare măsură de lipsa unei forme standardizate pentru specificarea codificării unui fișier sau flux. Problema ar putea fi rezolvată fie prin introducerea consecventă a standardului de specificare a codificării, fie prin introducerea unei codări comune pentru toate limbile. [5]

Problema setului limitat de caractere [5] . Problema ar putea fi rezolvată fie prin schimbarea fonturilor în cadrul documentului, fie prin introducerea unei codări „large”. Schimbarea fonturilor a fost de mult practicată în procesoarele de text, iar fonturile cu o codificare non-standard au fost adesea folosite , așa-numitele. „fonturi dingbat”. Ca urmare, atunci când încercați să transferați un document într-un alt sistem, toate caracterele non-standard s-au transformat în „nebun”.

Problema conversiei unei codificări în alta . Problema ar putea fi rezolvată fie prin compilarea tabelelor de conversie pentru fiecare pereche de codificări, fie prin utilizarea unei conversii intermediare la o a treia codificare care include toate caracterele tuturor codificărilor [9] .

Problemă de duplicare a fonturilor . Pentru fiecare codificare, a fost creat un font diferit, chiar dacă seturile de caractere din codificări se potriveau parțial sau complet. Problema ar putea fi rezolvată prin crearea de fonturi „mari”, din care să fie selectate ulterior caracterele necesare pentru o anumită codificare. Cu toate acestea, aceasta a necesitat crearea unui singur registru de caractere pentru a determina ce corespunde cu ce.

A fost recunoscută necesitatea unei singure codări „large”. Codificările cu lungime variabilă a caracterelor, utilizate pe scară largă în Asia de Est, s-au dovedit a fi prea dificil de utilizat, așa că s-a decis să se utilizeze caractere cu lățime fixă. Folosirea caracterelor pe 32 de biți părea prea risipitoare, așa că s-a decis să se utilizeze caractere pe 16 biți.

Prima versiune de Unicode a fost o codificare cu o dimensiune fixă ​​a caracterelor de 16 biți, adică numărul total de coduri a fost de 2 16 (65.536). De atunci, caracterele au fost notate cu patru cifre hexazecimale (de exemplu, U+04F0). În același timp, s-a planificat codificarea în Unicode nu a tuturor caracterelor existente, ci doar a celor care sunt necesare în viața de zi cu zi. Simbolurile utilizate rar urmau să fie plasate într-o „ zonă de utilizare privată ”, care a ocupat inițial codurile U+D800…U+F8FF. Pentru a folosi Unicode și ca o legătură intermediară la conversia diferitelor codificări între ele, acesta a inclus toate caracterele reprezentate în toate cele mai cunoscute codificări.

Pe viitor, însă, s-a decis codificarea tuturor caracterelor și, în acest sens, extinderea semnificativă a zonei de cod. În același timp, codurile de caractere au început să fie considerate nu ca valori de 16 biți, ci ca numere abstracte care pot fi reprezentate într-un computer în multe moduri diferite (vezi metode de reprezentare ).

Deoarece într-un număr de sisteme informatice (de exemplu, Windows NT [10] ) caracterele fixe de 16 biți erau deja folosite ca codificare implicită, s-a decis să se codifice toate caracterele cele mai importante doar în primele 65.536 de poziții (așa- numit English  Basic Multilingual Plane, BMP ). Restul spațiului este folosit pentru „caracterele suplimentare” : sisteme de scriere  ale limbilor dispărute sau caractere chinezești foarte rar utilizate , simboluri matematice și muzicale.

Pentru compatibilitate cu sisteme mai vechi pe 16 biți, a fost inventat sistemul UTF-16 , unde primele 65.536 de poziții, excluzând pozițiile din intervalul U+D800…U+DFFF, sunt afișate direct ca numere pe 16 biți, iar restul sunt reprezentate. ca „perechi surogat” (primul element al perechii din regiunea U+D800…U+DBFF, al doilea element al perechii din regiunea U+DC00…U+DFFF). Pentru perechile surogat, a fost folosită o parte din spațiul de cod (2048 de poziții) alocată „pentru uz privat”.

Deoarece doar 2 20 +2 16 −2048 (1 112 064) caractere pot fi afișate în UTF-16 , acest număr a fost ales ca valoare finală a spațiului de cod Unicode (interval de cod: 0x000000-0x10FFFF).

Deși zona de cod Unicode a fost extinsă dincolo de 2 16 deja în versiunea 2.0, primele caractere din regiunea „de sus” au fost plasate doar în versiunea 3.1.

Rolul acestei codificări în sectorul web este în continuă creștere. La începutul anului 2010, ponderea site-urilor web care foloseau Unicode era de aproximativ 50% [11] .

Versiuni Unicode

Lucrările la finalizarea standardului continuă. Noi versiuni sunt lansate pe măsură ce tabelele de simboluri se schimbă și cresc. În paralel, sunt emise noi documente ISO /IEC 10646.

Primul standard a fost lansat în 1991, cel mai recent este în prezent în 2021. Versiunile 1.0-5.0 ale standardului au fost publicate ca cărți și au ISBN [ 12] [13] .

Numărul versiunii standardului este compus din trei cifre (de exemplu, 3.1.1). A treia cifră este schimbată atunci când se fac modificări minore la standard care nu adaugă caractere noi (excepția este versiunea 1.0.1, care a adăugat ideograme unificate pentru literele chinezești, japoneze și coreene ) [14] .

Baza de date de caractere Unicode este disponibilă pentru toate versiunile pe site-ul oficial, atât în ​​format text simplu, cât și în format XML. Fișierele sunt distribuite sub o licență asemănătoare BSD .

versiuni Unicode
Versiunea numarul Data publicării ISBN de carte Ediția ISO/IEC 10646 Numărul de scripturi Număr de caractere [A 1 ] Schimbări
1.0.0 [15] octombrie 1991 ISBN 0-201-56788-1 (Vol.1) 24 7161 Inițial, Unicode conținea caractere din următoarele scripturi: arabă , armeană , bengaleză , zhuyin , chirilică , devanagari , georgiană , greacă, coptă , gujarati , gurmukhi , hangul , ebraică , hiragana , kannada , katakana , laosiană , latină , oriyala , malayalam Scriere tamilă , scriere telugu , scriere thailandeză și scriere tibetană [16]
1.0.1 iunie 1992 ISBN 0-201-60845-6 (Vol.2) 25 28 359 S-au adăugat 20.902 ideograme chineze, japoneze și coreene unificate [17]
1.1 [18] iunie 1993 ISO/IEC 10646-1:1993 24 34 233 Au fost adăugate 4306 silabe Hangul pentru a completa cele 2350 de caractere deja în codificare. Caractere tibetane eliminate [19]
2.0 [20] iulie 1996 ISBN 0-201-48345-9 ISO/IEC 10646-1:1993 și Amendamentele 5, 6, 7 25 38 950 Silabele Hangul adăugate anterior au fost eliminate și 11.172 de silabe Hangul noi au fost adăugate cu coduri noi. Au returnat caracterele șterse anterior din scriptul tibetan ; simbolurile au primit coduri noi și au fost plasate în tabele diferite. A fost introdus mecanismul caracterelor surogat ( în engleză  surogat ). Spațiu alocat pentru avioanele ( avioane ing .  ) 15 și 16 [21]
2.1 [22] mai 1998 ISO/IEC 10646-1:1993, amendamentele 5, 6, 7, două caractere din amendamentul 18 25 38 952 Simbolul euro adăugat și simbolul înlocuitor [23]
3.0 [24] septembrie 1999 ISBN 0-201-61633-5 ISO/IEC 10646-1:2000 38 49 259 S-au adăugat Script Cherokee , Script etiopian , Script khmer , Script mongol , Script birman , Script Ogham , Rune , Script sinhalez , Script siriac , Script Tana , Script și scriere silabară canadiană și caractere Braille [25]
3.1 [26] martie 2001 ISO/IEC 10646-1:2000

ISO/IEC 10646-2:2001

41 94 205 S-au adăugat Deseret, Gothic și Old Ital , precum și simboluri muzicale occidentale și bizantine , 42.711 ideograme unificate chineze , japoneze și coreene . Spațiu alocat pentru avioanele 1 , 2 și 14 [27]
3.2 [28] martie 2002 ISO/IEC 10646-1:2000 și amendamentul 1

ISO/IEC 10646-2:2001

45 95 221 S- a adăugat scriptul Buhid , hanunoo , baybayin și tagbanwa [29].
4.0 [30] aprilie 2003 ISBN 0-321-18578-1 ISO/IEC 10646:2003 52 96 447 S-au adăugat simboluri cipriot , Limbu , Linear B , Somali , Arată alfabet , Ly și Ugaritic și hexagramă [31]
4.1 [32] martie 2005 ISO/IEC 10646:2003 și amendamentul 1 59 97 720 S-au adăugat scrierea Lontar , scrierea glagolitică , scrierea Kharoshthi , scrierea nouă Ly , scrierea cuneiformă persană veche , scrierea Sylkhet Nagari și scrierea libiană veche . Simbolurile grafiei copte au fost separate de cele ale grafiei grecești . De asemenea, sunt adăugate simboluri ale cifrelor grecești vechi , simboluri muzicale ale Greciei Antice și simbolul grivnei (moneda Ucrainei ) [33]
5.0 [34] iulie 2006 ISBN 0-321-48091-0 ISO/IEC 10646:2003, amendamentele 1, 2, patru caractere din amendamentul 3 64 99 089 S-au adăugat balinez , cuneiform , N'Ko , piața mongolă și feniciană [35]
5.1 [36] aprilie 2008 ISO/IEC 10646:2003 și Amendamentele 1, 2, 3, 4 75 100 713 Se adaugă scrierea cariană , scrierea Cham, scrierea Kaya -li , scrierea Lepcha , scrierea liciană, scrierea lidiană , scrierea Ol - chiki , scrierea Rejang , scrierea Saurashtra, scrierea sundaneză , scrierea turcească veche și scrierea Vai . Au fost adăugate simboluri disc Phaistos , simboluri mahjong și zaruri domino , litera majusculă escet (ẞ), precum și litere latine folosite în manuscrisele medievale pentru abrevierea . Noi simboluri adăugate la setul de caractere birmane [37]
5.2 [38] octombrie 2009 ISO/IEC 10646:2003 și Amendamentele 1, 2, 3, 4, 5, 6 90 107 361 S-a adăugat scrierea avestană , scrierea Bamum , scrierea hieroglifică egipteană (conform listei lui Gardiner care conține 1071 de caractere), scrierea aramaică imperială , scrierea epigrafică pahleviană , scrierea epigrafică parthă [en , scrierea javaneză , scrierea Kaithi , Script manipuri , scriere sud-arabian , scriere turcească veche , scriere samariteană , scriere Lanna și scriere vietă thailandeză . S- au adăugat 4149 de ideograme noi unificate de scriere chineză, japoneză și coreeană (CJK-C), caractere vedice , simbol tenge (moneda Kazahstanului ) și, de asemenea, a extins setul de caractere Chamo al vechiului Hangul [39]
6.0 [40] octombrie 2010 ISO/IEC 10646:2010 și simbolul rupiei indiane 93 109 449 S-au adăugat scriptul Batak , scriptul Brahmi , scriptul Mandaean . S-au adăugat simboluri pentru cărți de joc , semne rutiere , hărți , alchimie , emoticon și emoji , precum și 222 de ideograme unificate pentru chineză, japoneză și coreeană (CJK-D) [41]
6.1 [42] ianuarie 2012 ISO/IEC 10646:2012 100 110 181 S-au adăugat script Chakma , caractere meroitice cursive și meroitice , script Miao , script Charade , script Sorang Sompeng și script Takri [43]
6.2 [44] septembrie 2012 ISO/IEC 10646:2012 și simbolul lirei turcești 100 110 182 Simbolul lirei turcești adăugat (moneda Turciei ) [45]
6.3 [46] Septembrie 2013 ISO/IEC 10646:2012 și șase caractere 100 110 187 S- au adăugat cinci caractere pentru formatarea bidirecțională [47]
7.0 [48] 16 iunie 2014 ISO/IEC 10646:2012, Amendamentele 1, 2 și simbolul rublei 123 113 021 S-a adăugat Bassa Script , Aghwan Script , Duploye Shorthand , Elbasan Script , Grantha Script , Khodjiki Script , Khudavadi Script , Linear A Script , Mahajani Script , Manichaean Script , Kikakui Script , Modi Script , Mro Script , scrierea nabateană , scrierea nord-arabă , scrierea permiană veche , scrierea Pahau , scrierea Palmyra , scrierea Chin Ho , scrierea Psaltirii Pahlavi , Siddhamatrika , scrierea Tirhuta , ornamentul Varang-kshiti și Dingbat , precum și simbolul rublei ruse și simbolul manatului azer [49]
8.0 [50] 17 iunie 2015 ISO/IEC 10646:2014, amendamentul 1, simbol lari , 9 ideograme CJK unificate, 41 emoji 129 120 737 S-au adăugat Script Ahom , Hieroglife anatoliene , Script Hatran , Script Multani , Rune maghiare , Scriere semnelor , 5776 CJK Ideograme unificate - Extensia E , Litere Cherokee minuscule , Litere latine pentru dialectologia germană, 41 Emoji și Simboluri de schimbare a culorii Emoji 5 pentru Skin . Simbol lari adăugat ( moneda georgiană ) [51]
9.0 [52] 21 iunie 2016 ISO/IEC 10646:2014, amendamentele 1, 2, adlam, neva, caractere TV japoneze, 74 de emoji -uri și simboluri 135 128 237 S-au adăugat Adlam Script , Bhaikshuki Script , Marchen Script , Neva Script , Osage Script , Tangut Script și 72 de caractere emoji și japoneze pentru TV [53]
10,0 [54] 20 iunie 2017 ISO/IEC 10646:2017, 56 emoji , 285 de caractere hentaigana , 3 caractere pătrate Zanabazar 139 136 755 S-a adăugat Zanabazara Square Script , Soyombo Script , Masarama Gondi , Nu Shu Script , Hentaigan Script , 7494 CJK Uniform Ideograms - Extensia F , 56 Emoji și Bitcoin Symbol [55]
11.0 iunie 2018 ISO/IEC 10646:2017 146 137 439 S-au adăugat Dogra, scrierea georgiană Mtavruli, Gunjal Gondi, Hanifi , cifre indiene Siyak, scrierea Makassar , Medefeydrin, scrierea (veche) Sogdiană , cifre mayașe , 5 ideograme CJK, simboluri Xiangqi și jumătate de stele pentru evaluare, precum și 145 de emoji -uri , simboluri emoticon modificări coafură și simbol copyleft [56] [57] [58]
12.0 martie 2019 ISO/IEC 10646:2017, Amendamentele 1, 2, plus 62 de caractere suplimentare 150 137 993 Scenariul Elimai adăugat, nadinagari, Hmong, Wancho, adaosuri pentru scrierea Pollard , kana mică pentru texte japoneze vechi, fracții istorice și caractere tamile , litere laos pentru pali , litere latine pentru transliterarea ugaritică, caractere de control al formatării hieroglifelor egiptene și 61 de emoji [59] [ 60]
12.1 mai 2019 150 137 994 Simbol pătrat al epocii Rave adăugat [61] [62]
13.0 martie 2020 154 143 859 S-au adăugat Scriptul Khwarezmian , Scriptul Dives Akur , Scriptul Khitan Minor , Scriptul Yezidi , 4969 ideograme CJK (inclusiv 4939 CJK Unified Ideograms - extensia G ), precum și 55 de emoji , caractere Creative Commons și caractere pentru calcularea moștenită. Spațiu alocat pentru avionul 3 [63] [64]


14.0 septembrie 2021 159 144 697 S-au adăugat Toto , Cipriot-Minoan , Vitkut , Old Uighur , Tangsa , caractere latine suplimentare ( Latin Extended - F , Latin Extended - G blocuri ) pentru utilizare în extensiile IPA , adăugarea de grafie arabă pentru utilizare în limbile africane, iraniene, Pakistan, Malaezia , Indonezia, Java și Bosnia, precum și suplimente pentru utilizare în Coran, alte suplimente pentru a sprijini limbile din America de Nord, Filipine, India și Mongolia, adăugarea simbolului soma , Znamenny notație și 37 de emoji -uri .
15.0 septembrie 2022 161 149 186 S-a adăugat alfabetul Naga pentru Mundari (≈1950), Kawi (Javaneză veche), cifre Kaktovik , caractere chirilice pentru transcriere, litere latine pentru malayalam , 3 ligaturi din Coranul turc, 1 hieroglifă egipteană, simboluri pentru redarea hieroglifelor egiptene uzate, simboluri din Jainismul, o stea Baha'i , simboluri pentru cinci obiecte trans-neptuniene și 31 de emoji (inclusiv culorile pielii).
Note
  1. Inclusiv caractere grafice ( ing.  graphic ), control ( ing.  control ) și caractere de formatare ( ing.  format ); fără a include caracterele pentru uz privat ( ing.  private-use ), caracterele fără caracter ( ing.  noncharacters ) și surogate ( ing.  puncte de cod surogat ).

Spațiu cod

Deși notația UTF-8 permite codificarea a până la 221 (2097152) puncte de cod , a fost luată decizia de a folosi doar 1112064 pentru compatibilitate cu UTF-16. Cu toate acestea, chiar și acest lucru este mai mult decât suficient în acest moment - doar 144.697 de poziții de cod sunt utilizate în versiunea 14.0.

Spațiul de cod este împărțit în 17 planuri ( planuri englezești  ) de 2 16 (65 536) caractere. Planul zero ( planul 0 ) se numește de bază ( de bază ) și conține simbolurile celor mai frecvent utilizate scripturi. Planurile rămase sunt suplimentare ( suplimentare ). Primul plan ( planul 1 ) este folosit în principal pentru scripturile istorice, al doilea ( planul 2 ) este folosit pentru caracterele chinezești rar utilizate (CCH) , al treilea ( planul 3 ) este rezervat caracterelor chinezești arhaice [65] . Planul 14 este rezervat simbolurilor utilizate într-un scop special. Avioanele 15 și 16 sunt rezervate uzului privat [6] .

Pentru a desemna caractere Unicode, o intrare de forma „U + xxxx „ (pentru codurile 0 ... FFFF) sau „U + xxxxx „ (pentru codurile 10000 ... FFFFF) sau „U + xxxxxx „ (pentru coduri 100000 ... 10FFFF), unde xxx  sunt cifre hexazecimale , este utilizat . De exemplu, caracterul „I” (U+044F) are codul 044F 16  = 1103 10 .

Sistem de codare

Sistemul universal de codare (Unicode) este un set de caractere grafice și o modalitate de a le codifica pentru procesarea computerizată a datelor text.

Simbolurile grafice sunt simboluri care au o imagine vizibilă. Caracterele grafice sunt în contrast cu caracterele de control și caracterele de formatare.

Simbolurile grafice includ următoarele grupuri:

Unicode este un sistem de reprezentare liniară a textului. Caracterele cu elemente suplimentare de indice sau indice pot fi reprezentate ca o succesiune de coduri construite dupa anumite reguli (varianta compusa, caracter compus) sau ca un singur caracter (varianta monolitica, caracter precompus). Din 2014, se consideră că toate literele de scripturi mari sunt incluse în Unicode, iar dacă un caracter este disponibil într-o versiune compusă, nu este necesară duplicarea lui într-o formă monolitică.

Principii generale

Garanții de stabilitate Odată ce un caracter a apărut în codificare, acesta nu se va mișca sau nu va dispărea. Astfel, fiecare Unicode nou va fi un superset al celui vechi. Dacă este necesar să se schimbe ordinea caracterelor, aceasta se face nu prin schimbarea pozițiilor, ci prin ordinea națională de sortare. Există și alte garanții, mai subtile, ale stabilității - de exemplu, tabelele de normalizare nu se vor schimba [66] . Legătura dinamică Un obiectiv atât de înalt precum universalitatea, Unicode îl atinge prin asamblarea dinamică a textului tipărit. Uneori, caracterele monolitice sunt făcute și pentru comoditate, dar în general A + ¨ = Ä . ordine logică Ordinea caracterelor este aproximativ aceeași cu ordinea de citire și tastare și nu aceeași cu ordinea de afișare, în special în textul bidirecțional. Există excepții istorice: de exemplu, în Lao vocalele pot merge înaintea unei consoane, deși sunt citite după. Convertibilitate Dacă două forme ale aceluiași caracter sunt codificate în poziții diferite într-o codificare importantă, la fel este și Unicode. Conversia nu este neapărat 1:1 - un caracter dintr-o codificare diferită poate fi convertit în mai multe caractere Unicode și invers. Text simplu Unicode codifică text simplu fără decorare. Se crede că textul simplu ar trebui să stocheze suficiente date pentru a le afișa lizibil și nimic altceva. Semantică Proprietățile caracterelor sunt setate în mod oficial utilizând formatele CSV și XML . Simboluri, nu glife Un simbol este o unitate de semnificație. Glyph - o imagine conținută într-un font și afișată pe ecran/print. De exemplu, un script nasta'liq în stil arab ar avea mii de glife. Dar în codificare, există aproximativ 200 de caractere de arabă standard care transmit sensul. În schimb, uneori (vezi unificare ) caractere diferite pot avea același glif. Versatilitate Unicode este conceput pentru oameni de diferite limbi și profesii: lucrează în afaceri, educație, religie și știință, pentru texte moderne și istorice. În afara Unicode sunt: Unificare Unicode încearcă să nu dubleze caracterele. Deci, litera engleză „wai”, „y” franceză și „upsilon” germană sunt aceeași poziție de cod Y . Mai mult, hieroglife similare chinezești și japoneze sunt o poziție de cod. Există câteva excepții importante. Litere similare ale diferitelor scripturi sunt codificate cu diferite poziții de cod. Adesea, pozițiile sunt duplicate pentru a simplifica procesarea - de exemplu, în Unicode există trei litere Ð cu litere mici diferite. O lovitură matematică și aceeași lovitură pentru a indica blândețea sunetelor  sunt simboluri diferite, a doua este considerată o literă modificatoare. Convertibilitatea poate merge împotriva unificării - sigma greacă cu litere mici are două forme diferite și sunt poziții de cod diferite. Eficienţă Unicode este conceput astfel încât implementările eficiente să fie fezabile. Codurile de caractere sunt numere consecutive de la 0 la 10FFFF 16 , acest lucru vă permite să vă ocupați de tabelele de căutare . UTF-8 și UTF-16 sunt coduri cu auto-sincronizare, iar cele mai importante caractere sunt disponibile fără decodare. Unicode evită formatarea caracterelor care schimbă starea internă. Și mult mai mult.

Politica consorțiului

Consorțiul nu creează ceva nou, ci precizează ordinea stabilită a lucrurilor [67] . De exemplu, imaginile „ emoji ” au fost adăugate deoarece operatorii de telefonie mobilă japonezi le-au folosit pe scară largă. Pentru a face acest lucru, adăugarea unui personaj trece printr-un proces complicat [67] . Și, de exemplu, simbolul rublei ruse l-a trecut în trei luni, de îndată ce a primit statutul oficial, și înainte de asta a fost folosit de facto de mulți ani și a fost refuzat să fie inclus în Unicode.

Mărcile comerciale sunt codificate doar ca excepție. Deci, nu există niciun steag Windows sau Apple Apple în Unicode .

Emoji -urile nu sunt introduse în Unicode dacă: [68]

Caractere combinabile

Caracterele din Unicode sunt împărțite în de bază ( caractere de bază în engleză  ) și combinate ( caractere de combinare în engleză ). Simbolurile combinate urmează de obicei baza și își schimbă afișarea într-un anumit mod. Caracterele combinate, de exemplu, includ semne diacritice , semne de accent. De exemplu, litera rusă „Y” în Unicode poate fi scrisă ca caracterul de bază „И” (U+0418) și caracterul combinat „̆” (U+0306) afișat deasupra caracterului de bază.  

Caracterele combinate sunt marcate în tabelele de caractere Unicode cu categorii speciale:

Un tip special de caractere combinabile sunt selectoarele de variație .  Acestea afectează doar acele caractere de bază pentru care sunt definite astfel de variante. De exemplu, în Unicode versiunea 5.0, caracterele variante sunt definite pentru un număr de simboluri matematice, pentru caracterele mongole tradiționale și pentru caracterele pătrate mongole .

Algoritmi de normalizare

Datorită prezenței caracterelor combinabile în Unicode, aceleași caractere pot fi reprezentate prin coduri diferite. Deci, de exemplu, litera „Y” din exemplul de mai sus poate fi scrisă ca un caracter separat sau ca o combinație de bază și combinată. Din această cauză, compararea șirurilor octet cu octet devine imposibilă. Formele de normalizare rezolvă această problemă prin conversia caracterelor într-o anumită formă standard .  Castingul se realizează prin înlocuirea personajelor cu altele echivalente folosind tabele și reguli. „Descompunerea” este înlocuirea (descompunerea) unui caracter în mai multe caractere constitutive, iar „compunerea”, dimpotrivă, este înlocuirea (combinarea) mai multor caractere constitutive cu un singur caracter.

Standardul Unicode definește patru algoritmi de normalizare a textului: NFD, NFC, NFKD și NFKC.

NFD

NFD, ing.  n forma de normalizare D (" D " din engleză  descompunere ), forma de normalizare D - descompunere canonică - un algoritm conform căruia descompunerea recursivă a caracterelor compuse (caractere precompuse engleze  ) într-o secvență de unul sau mai multe caractere simple este realizată în conformitate cu cu descompunerea tabelelor. Recursiv deoarece, în procesul de descompunere, un caracter compozit poate fi descompus în câteva altele, dintre care unele sunt tot compozite și cărora li se aplică o descompunere ulterioară.

Exemple:

Ω
U+2126
Ω
U+03A9
A
U+00C5
A
U+0041
̊
U+030A
U+1E69
s
U+0073
̣
U+0323
̇
U+0307
ḍ˙
U+1E0B U+0323
d
U+0064
̣
U+0323
̇
U+0307
q̣˙
U+0071 U+0307 U+0323
q
U+0071
̣
U+0323
̇
U+0307

NFC

NFC, engleză  n forma de normalizare C ( "C" din engleza composition  ) , forma de normalizare C este un algoritm conform caruia descompunerea canonica si compunerea canonica sunt efectuate secvential. Mai întâi, descompunerea canonică (algoritmul NFD) reduce textul la forma D. Apoi compoziția canonică, inversul NFD, procesează textul de la început până la sfârșit, ținând cont de următoarele reguli:

Exemplu:

o
U+006F
̂
U+0302
o
U+00F4

NFKD

NFKD, ing.  n formă de normalizare KD , formă de normalizare KD - descompunere compatibilă - un algoritm conform căruia descompunerea canonică și înlocuirea caracterelor textului se realizează secvenţial conform tabelelor de descompunere compatibile. Tabelele de descompunere de compatibilitate oferă înlocuire pentru simboluri aproape echivalente [69] :

Exemple:

U+210D
H
U+0048
U+2460
unu
U+0031
U+FF76
U+30AB
U+FE37
{
U+007B
U+2079
9
U+0039
¼
U+00BC
unu patru
U+0031 U+2044 U+0034
U+2122
T M
U+0054 U+004D

NFKC

NFKC, ing.  n forma de normalizare KC , forma de normalizare KC este un algoritm conform căruia descompunerea compatibilă (algoritmul NFKD) și compoziția canonică (algoritmul NFC) sunt efectuate succesiv .

Exemple

Text sursă NFD NFC NFKD NFKC
fi
U+FB01
fi
U+FB01
fi
U+FB01
f i
U+0066 U+0069
f i
U+0066 U+0069
2
U+0032 U+2075
2
U+0032 U+2075
2
U+0032 U+2075
2 5
U+0032 U+0035
2 5
U+0032 U+0035
ẛ̣
U+1E9B U+0323
ſ ̣ ̇
U+017F U+0323 U+0307
̣
U+1E9B U+0323
s ̣ ̇
U+0073 U+0323 U+0307
U+1E69
th
U+0439
și ̆
U+0438 U+0306
th
U+0439
și ̆
U+0438 U+0306
th
U+0439
yo
U+0451
e ̈
U+0435 U+0308
yo
U+0451
e ̈
U+0435 U+0308
yo
U+0451
DAR
U+0410
DAR
U+0410
DAR
U+0410
DAR
U+0410
DAR
U+0410
U+304C
U+304B U+3099
U+304C
U+304B U+3099
U+304C
U+2167
U+2167
U+2167
V eu eu eu
U+0056 U+0049 U+0049 U+0049
V eu eu eu
U+0056 U+0049 U+0049 U+0049
ç
U+00E7
c ̧
U+0063 U+0327
ç
U+00E7
c ̧
U+0063 U+0327
ç
U+00E7

Scriere bidirecțională

Standardul  Unicode acceptă atât limbile de scriere de la stânga la dreapta (LTR ) cât și de la dreapta  la stânga (RTL ) , cum ar fi arabă și ebraică . În ambele cazuri, personajele sunt stocate într-o ordine „naturală”; afișarea acestora, ținând cont de direcția de scriere dorită, este asigurată de aplicație.

În plus, Unicode acceptă texte combinate care combină fragmente cu direcții de scriere diferite. Această caracteristică se numește bidirecționalitate ( text bidirecțional în engleză  , BiDi ). Unele procesoare de text ușoare (cum ar fi cele găsite în telefoanele mobile) pot accepta Unicode, dar este posibil să nu accepte bidirecționalitate. Toate caracterele Unicode sunt împărțite în mai multe categorii: scrise de la stânga la dreapta, scrise de la dreapta la stânga și scrise în orice direcție. Caracterele din ultima categorie (în mare parte semne de punctuație ) iau direcția textului din jurul lor atunci când sunt afișate.

Personaje prezentate

Unicode include practic toate scripturile moderne , inclusiv:

si altii.

Au fost adăugate multe scripturi istorice în scopuri academice, printre care: rune germanice , rune turcești vechi , scriere greacă veche , hieroglife egiptene , cuneiforme , scriere mayașă , alfabet etrusc .

Unicode oferă o gamă largă de simboluri matematice și muzicale , precum și pictograme .

Steaguri de stat nu sunt incluse direct în Unicode. Acestea sunt codificate în perechi de 26 de caractere alfa concepute pentru a reprezenta codurile de țară din două litere ISO 3166-1 alfa-2 . Aceste litere sunt codificate în intervalul U+1F1E6 🇦 simbol indicator regional litera a (HTML  🇦) până la U+1F1FF 🇿 simbol indicator regional litera z (HTML  🇿).

Unicode exclude în mod fundamental siglele companiei și ale produselor , deși acestea apar în fonturi (de exemplu, sigla Apple în MacRoman (0xF0) sau sigla Windows în Wingdings (0xFF)). În fonturile Unicode, siglele ar trebui să fie plasate numai în zona de caractere personalizată. Există fonturi gratuite care includ sigle ale companiei, produse software și alte mărci comerciale (de exemplu Font Awesome [70] ).

ISO/IEC 10646

Consorțiul Unicode lucrează îndeaproape cu grupul de lucru ISO/IEC/JTC1/SC2/WG2, care dezvoltă Standardul internațional 10646 ( ISO / IEC 10646). Există o sincronizare între standardul Unicode și ISO/IEC 10646, deși fiecare standard folosește propria terminologie și sistem de documentare.

Cooperarea Consorțiului Unicode cu Organizația Internațională pentru Standardizare (Organizația Internațională pentru Standardizare engleză  , ISO ) a început în 1991 . În 1993, ISO a lansat DIS 10646.1. Pentru a se sincroniza cu acesta, Consorțiul a aprobat standardul Unicode versiunea 1.1, care includea caractere suplimentare din DIS 10646.1. Ca urmare, valorile caracterelor codificate în Unicode 1.1 și DIS 10646.1 s-au potrivit exact.

În viitor, cooperarea dintre cele două organizații a continuat. În 2000, standardul Unicode 3.0 a fost sincronizat cu ISO/IEC 10646-1:2000. A treia versiune viitoare a ISO/IEC 10646 va fi sincronizată cu Unicode 4.0. Poate că aceste specificații vor fi chiar publicate ca standard unic.

Similar cu formatele Unicode UTF-16 și UTF-32, ISO/IEC 10646 are, de asemenea, două forme principale de codificare a caracterelor: UCS-2 (2 octeți per caracter, similar cu UTF-16) și UCS-4 (4 octeți per caracter, similar la UTF-32). UCS înseamnă set de caractere codat universal .  UCS-2 poate fi considerat un subset al UTF-16 (UTF-16 fără perechi surogat), iar UCS-4 este un sinonim pentru UTF-32.

Diferențele dintre standardele Unicode și ISO/IEC 10646:

Metode de prezentare

Unicode are mai multe forme de reprezentare ( formatul de transformare Unicode englezesc  , UTF ): UTF-8 , UTF-16 (UTF-16BE, UTF-16LE) și UTF-32 (UTF-32BE, UTF-32LE). A fost dezvoltată și o formă de reprezentare UTF-7 pentru transmisia pe canale pe șapte biți, dar din cauza incompatibilității cu ASCII, nu a fost utilizată pe scară largă și nu a fost inclusă în standard. La 1 aprilie 2005, au fost propuse două forme de reprezentare a glumei : UTF-9 și UTF-18 ( RFC 4042 ).

Microsoft Windows NT și sistemele sale bazate pe Windows 2000 și Windows XP utilizează în principal formularul UTF-16LE. Sistemele de operare asemănătoare UNIX GNU/Linux , BSD și Mac OS X adoptă forma UTF-8 pentru fișiere și UTF-32 sau UTF-8 pentru procesarea caracterelor în memorie .

Punycode  este o altă formă de codificare a secvențelor de caractere Unicode în așa-numitele secvențe ACE, care constau numai din caractere alfanumerice, așa cum este permis în numele de domenii.

UTF-8

UTF-8 este cea mai compactă reprezentare a Unicode și este compatibil cu sistemul ASCII pe 7 biți ; textul format doar din caractere cu numere mai mici de 128, când este scris în UTF-8, se transformă în text simplu ASCII și poate fi afișat de orice program care funcționează cu ASCII; invers, textul codificat în ASCII pe 7 biți poate fi afișat printr-un program conceput să funcționeze cu UTF-8. Restul caracterelor Unicode sunt reprezentate ca secvențe de 2 până la 4 octeți lungime, în care primul octet are întotdeauna o mască 11xxxxxx, iar restul - 10xxxxxx. UTF-8 nu folosește perechi surogat.

Formatul UTF-8 a fost inventat pe 2 septembrie 1992 de Ken Thompson și Rob Pike și implementat în Planul 9 [71] . Acum, standardul UTF-8 este consacrat oficial în RFC 3629 și ISO/IEC 10646 Anexa D.

UTF-16 și UTF-32

UTF-16 este o codificare care vă permite să scrieți caractere Unicode în intervalele U + 0000 ... U + D7FF și U + E000 ... U + 10FFFF (număr total 1 112 064). În acest caz, fiecare caracter este scris în unul sau două cuvinte (o pereche surogat). Codificarea UTF-16 este descrisă în Anexa Q la standardul internațional ISO/IEC 10646 și este, de asemenea, acoperită în IETF RFC 2781 intitulat „UTF-16, o codificare a ISO 10646”.

UTF-32 este o modalitate de a reprezenta Unicode, în care fiecare caracter ocupă exact 4 octeți. Principalul avantaj al UTF-32 față de codificările cu lungime variabilă este că caracterele Unicode din acesta sunt direct indexabile, astfel încât găsirea unui caracter după numărul poziției fișierului poate fi extrem de rapidă, iar obținerea oricărui caracter în poziția a n- a este o operație care ocupă întotdeauna in acelasi timp. De asemenea, face foarte ușoară înlocuirea caracterelor din șirurile UTF-32. În schimb, codificările cu lungime variabilă necesită acces secvenţial la poziţia a n- a de caractere , ceea ce poate fi o operaţie care necesită foarte mult timp. Principalul dezavantaj al UTF-32 este utilizarea ineficientă a spațiului, deoarece patru octeți sunt folosiți pentru a stoca orice caracter. Caracterele aflate în afara planului zero (de bază) al spațiului de cod sunt rareori folosite în majoritatea textelor. Prin urmare, dublarea, în comparație cu UTF-16, a spațiului ocupat de șiruri în UTF-32, nu este adesea justificată.

Endianness

Într-un flux de date UTF-16, octetul scăzut poate fi scris fie înainte de octetul înalt ( UTF  -16 little-endian, UTF-16LE ) fie după octetul înalt ( UTF-16 big-endian, UTF-16BE ) .  În mod similar, există două variante de codificare pe patru octeți - UTF-32LE și UTF-32BE.

Marcator de secvență de octeți

Pentru a indica utilizarea Unicode, la începutul unui fișier text sau al unui flux, se poate transmite un marcaj de ordine a octetilor (BOM) - un caracter U + FEFF (spațiu fără lățime zero). Prin aspectul său, se pot distinge cu ușurință atât formatul de reprezentare Unicode, cât și secvența de octeți. Markerul secvenței de octeți poate lua următoarea formă:  

UTF-8 EF BB BF UTF-16BE FE FF UTF-16LE FF FE UTF-32BE 0000FEFF UTF-32LE FF FE 00 00

Unicode și codificări tradiționale

Introducerea Unicode a condus la o schimbare în abordarea codificărilor tradiționale pe 8 biți. Dacă mai devreme o astfel de codificare a fost întotdeauna setată direct, acum poate fi setată de tabelul de corespondență dintre această codificare și Unicode. De fapt, aproape toate codificările pe 8 biți pot fi acum gândite ca o formă de reprezentare a unui subset de Unicode. Și acest lucru a făcut mult mai ușoară crearea de programe care trebuie să funcționeze cu multe codificări diferite: acum, pentru a adăuga suport pentru încă o codificare, trebuie doar să adăugați un alt tabel de conversie a caracterelor la Unicode.

În plus, multe formate de date vă permit să introduceți orice caracter Unicode, chiar dacă documentul este scris în vechea codificare de 8 biți. De exemplu, în HTML, puteți utiliza coduri ampersand .

Implementări

Cele mai multe sisteme de operare moderne oferă suport Unicode într-o oarecare măsură.

Familia de sisteme de operare Windows NT utilizează codificarea UTF-16LE pe doi octeți pentru a reprezenta intern numele fișierelor și alte șiruri de caractere de sistem. Apelurile de sistem care preiau parametri de șir vin în variante pe un singur octet și pe dublu octet. Pentru mai multe informații, consultați articolul Unicode în sistemele de operare din familia Microsoft Windows .

Sistemele de operare asemănătoare UNIX , inclusiv GNU/Linux , BSD , OS X , utilizează codificarea UTF-8 pentru a reprezenta Unicode. Majoritatea programelor pot funcționa cu UTF-8 ca și în cazul codificărilor tradiționale pe un singur octet, indiferent de faptul că un caracter este reprezentat ca mai mulți octeți consecutivi. Pentru a trata un singur caracter, șirurile sunt de obicei recodificate în UCS-4, astfel încât fiecare caracter să aibă un cuvânt de mașină corespunzător .

Una dintre primele implementări comerciale de succes ale Unicode a fost mediul de programare Java . A abandonat fundamental reprezentarea pe 8 biți a caracterelor în favoarea celor pe 16 biți. Această decizie a crescut consumul de memorie, dar a permis să returneze o abstracție importantă programării: un singur caracter arbitrar (tip char). În special, programatorul ar putea lucra cu un șir ca și cu o matrice simplă. Succesul nu a fost definitiv, Unicode a depășit limita de 16 biți și, prin J2SE 5.0, un caracter arbitrar a început din nou să ocupe un număr variabil de unități de memorie - una charsau două (vezi perechea surogat ).

Acum[ când? ] majoritar[ cât? ] limbajele de programare acceptă șiruri Unicode, deși reprezentarea lor poate varia în funcție de implementare.

Metode de introducere

Deoarece niciun aspect al tastaturii nu poate permite introducerea tuturor caracterelor Unicode în același timp, sistemele de operare și programele de aplicație sunt necesare pentru a accepta metode alternative de introducere a caracterelor Unicode arbitrare.

Microsoft Windows

Începând cu Windows 2000 , Character Map Utility (charmap.exe) acceptă caractere Unicode și le permite să fie copiate în clipboard . Este acceptat doar planul de bază (coduri de caractere U+0000…U+FFFF); caracterele cu coduri de la U + 10000 „Tabelul de caractere” nu se afișează. Există un tabel similar în Microsoft Word .

Uneori puteți introduce un cod hexazecimal , apăsați Alt+ X, iar codul va fi înlocuit cu caracterul corespunzător, de exemplu, în WordPad , Microsoft Word. În editori , Alt+ Xefectuează și transformarea inversă. În programele care rulează în mediul Windows, pentru a obține un caracter Unicode, trebuie să apăsați tasta Alt în timp ce apăsați valoarea zecimală a codului caracterului de pe tastatura numerică: de exemplu, combinațiile Alt + 0171 și Alt + 0187 afișează stânga și dreapta ghilimele în schemă , respectiv, Alt + 0151 - em liniuță, Alt + 0769 - semn de accent , Alt + 0133 - puncte de suspensie etc.

Macintosh

Mac OS 8.5 și versiunile ulterioare acceptă o metodă de introducere numită „Unicode Hex Input”. În timp ce țineți apăsată tasta Opțiune, trebuie să introduceți codul hexazecimal din patru cifre al caracterului necesar. Această metodă vă permite să introduceți caractere cu coduri mai mari decât U+FFFD folosind perechi de surogate; astfel de perechi vor fi înlocuite automat de sistemul de operare cu caractere individuale. Această metodă de introducere trebuie activată în secțiunea corespunzătoare a setărilor sistemului înainte de utilizare și apoi selectată ca metodă de introducere curentă în meniul tastaturii.

Începând cu Mac OS X 10.2, există și o aplicație „Paletă de caractere” care vă permite să selectați caractere dintr-un tabel în care puteți selecta caractere dintr-un anumit bloc sau caractere acceptate de un anumit font.

GNU/Linux

GNOME are, de asemenea, un utilitar „Charmap” ( fost gucharmap) care vă permite să afișați caractere dintr-un anumit bloc sau sistem de scriere și oferă posibilitatea de a căuta după numele caracterului sau descriere. Când se cunoaște codul caracterului dorit, acesta poate fi introdus în conformitate cu standardul ISO  14755: menținând apăsate tastele Ctrl+ , ⇧ Shiftintroduceți codul hexazecimal (începând cu o anumită versiune de GTK+, introducerea codului trebuie precedată de apăsarea butonului) . Tasta „U” ). Codul hexazecimal pe care îl introduceți poate avea o lungime de până la 32 de biți , permițându-vă să introduceți orice caracter Unicode fără a utiliza perechi surogat.

Toate aplicațiile X Window , inclusiv GNOME și KDE , acceptă introducerea tastelor Compose. Pentru tastaturile care nu au o tastă Compose dedicată , orice tastă poate fi alocată în acest scop, cum ar fi . ⇪ Caps Lock

Consola GNU/Linux permite, de asemenea, introducerea unui caracter Unicode prin codul său - pentru aceasta, codul zecimal al caracterului trebuie introdus cu cifrele blocului de tastatură extins în timp ce țineți apăsată tasta Alt. De asemenea, puteți introduce caractere după codul lor hexazecimal: pentru a face acest lucru, țineți apăsată tasta AltGr, iar pentru a introduce numerele A-F, utilizați tastele blocului de tastatură extins de la NumLockla ↵ Enter(în sensul acelor de ceasornic). Este acceptată și introducerea conform ISO 14755. Pentru ca metodele enumerate să funcționeze, trebuie să activați modul Unicode în consolă apelând unicode_start(1) și selectați fontul corespunzător apelând setfont(8).

Mozilla Firefox pentru Linux acceptă introducerea de caractere ISO 14755.

Probleme Unicode

În Unicode, engleza „a” și poloneză „a” sunt același caracter. În același mod, „a” rusesc și „a” sârbesc sunt considerate același caracter (dar diferit de latinul „a”). Acest principiu de codare nu este universal; aparent, o soluție „pentru toate ocaziile” nu poate exista deloc.

  • Textele în chineză , coreeană și japoneză sunt scrise în mod tradițional de sus în jos, începând din colțul din dreapta sus. Comutarea scrierii orizontale și verticale pentru aceste limbi nu este furnizată în Unicode - aceasta trebuie făcută prin intermediul limbajelor de marcare sau a mecanismelor interne ale procesoarelor de text .
  • Prezența sau absența în Unicode a diferitelor stiluri ale aceluiași caracter, în funcție de limbă. Trebuie avut grijă să vă asigurați că textul este întotdeauna corect marcat ca referindu-se la o limbă sau la alta. Deci, caracterele chinezești pot avea stiluri diferite în chineză, japoneză ( kanji ) și coreeană ( hancha ), dar în același timp în Unicode sunt notate cu același caracter (așa-numita unificare CJK), deși caractere simplificate și complete încă au coduri diferite. În mod similar, rusă și sârbă folosesc stiluri diferite pentru literele cursive p și t (în sârbă arată ca p ( i̅ ) și t ( sh̅ ), vezi cursiva sârbă ).
  • Traducerea de la litere mici la majuscule depinde și de limbă. De exemplu: în turcă există literele İi și Iı  - astfel, regulile turcești pentru schimbarea cazului intră în conflict cu limba engleză , care necesită ca „i” să fie tradus în „I”. Există probleme similare în alte limbi - de exemplu, în dialectul canadian al francezului, cazul este tradus puțin diferit decât în ​​Franța [72] .
  • Chiar și cu cifre arabe , există anumite subtilități tipografice: cifrele sunt „majuscule” și „ minuscule ”, proporționale și monospațiu [73]  - pentru Unicode nu există nicio diferență între ele. Astfel de nuanțe rămân cu software-ul.

Unele dintre deficiențe nu sunt legate de Unicode în sine, ci de capacitățile procesoarelor de text.

  • Fișierele text non-latine în Unicode ocupă întotdeauna mai mult spațiu, deoarece un caracter este codificat nu de un octet, ca în diferitele codificări naționale, ci de o secvență de octeți (excepția este UTF-8 pentru limbile ale căror alfabetul se încadrează în ASCII, precum și prezența a două caractere în text și mai multe limbi al căror alfabet nu se încadrează în ASCII [74] ). Fișierul cu fonturi pentru toate caracterele din tabelul Unicode ocupă o cantitate relativ mare de spațiu de memorie și necesită mai multe resurse de calcul decât fontul unei singure limbi naționale a utilizatorului [75] . Odată cu creșterea puterii sistemelor informatice și reducerea costului memoriei și spațiului pe disc, această problemă devine din ce în ce mai puțin semnificativă; cu toate acestea, rămâne relevant pentru dispozitivele portabile, cum ar fi telefoanele mobile.
  • Deși suportul Unicode este implementat în cele mai comune sisteme de operare, nu toate aplicațiile software încă acceptă lucrul corect cu acesta. În special, marcajele de ordine de octeți ( BOM ) nu sunt întotdeauna gestionate, iar semnele diacritice sunt slab acceptate . Problema este temporară și este o consecință a noutății comparative a standardelor Unicode (comparativ cu codificările naționale pe un singur octet).
  • Performanța tuturor programelor de procesare a șirurilor de caractere (inclusiv sortarea în baza de date) este redusă atunci când se utilizează Unicode în loc de codificări pe un singur octet.

Unele sisteme de scriere rare nu sunt încă reprezentate corect în Unicode. Reprezentarea superscriptelor „lungi” care se întind pe mai multe litere, cum ar fi în slavona bisericească , nu a fost încă implementată.

Ortografia cuvântului „Unicode”

„Unicode” este atât un nume propriu (sau o parte a unui nume, de exemplu, Consorțiul Unicode), cât și un substantiv comun care provine din limba engleză.

La prima vedere, pare de preferat să folosiți ortografia „Unicode”. Limba rusă are deja morfemele „uni-” (cuvintele cu elementul latin „uni-” au fost traduse și scrise în mod tradițional prin „uni-”: universal, unipolar, unificare, uniform) și „cod”. În schimb, mărcile înregistrate împrumutate din engleză sunt de obicei transmise prin transcriere practică, în care combinația de-etimologizată de litere „uni-” este scrisă ca „uni-” („ Unilever ”, „ Unix ”, etc.), adică, exact ca în cazul abrevierilor literă cu literă, cum ar fi UNICEF „United Nations International Children’s Emergency Fund” - UNICEF .

Există o pagină dedicată pe site-ul web al Consorțiului care discută problemele traducerii cuvântului „Unicode” în diferite limbi și sisteme de scriere. Pentru alfabetul chirilic rus este indicată varianta Unicode [1] . MS Windows folosește și varianta „Unicode”.

Wikipedia în rusă folosește varianta Unicode ca fiind cea mai comună.

Vezi și

Note

  1. 1 2 Trancrieri Unicode  (engleză)  (link nu este disponibil) . Consultat la 10 mai 2010. Arhivat din original pe 8 aprilie 2006.
  2. Standardul Unicode®: O introducere tehnică (downlink) . Preluat la 4 iulie 2010. Arhivat din original la 10 martie 2010. 
  3. Istoria datelor de lansare și publicare Unicode (link nu este disponibil) . Preluat la 4 iulie 2010. Arhivat din original la 10 ianuarie 2010. 
  4. Consorțiul Unicode (link în jos) . Preluat la 4 iulie 2010. Arhivat din original la 27 iunie 2010. 
  5. 1 2 3 Cuvânt înainte (link descendent) . Preluat la 4 iulie 2010. Arhivat din original la 27 iunie 2010. 
  6. 1 2 Structura generală (link inaccesibil) . Data accesului: 5 iulie 2010. Arhivat din original pe 27 iunie 2010. 
  7. Scripturi alfabetice europene (downlink) . Preluat la 4 iulie 2010. Arhivat din original la 27 iunie 2010. 
  8. Ce este Unicode?
  9. Unicode 88 (link indisponibil) . Preluat la 8 iulie 2010. Arhivat din original la 6 septembrie 2017. 
  10. Unicode și Microsoft Windows NT  (engleză)  (link nu este disponibil) . Asistență Microsoft . Consultat la 12 noiembrie 2009. Arhivat din original pe 26 septembrie 2009.
  11. Unicode este folosit de aproape 50% dintre site-uri web (downlink) . Consultat la 9 februarie 2010. Arhivat din original pe 11 iunie 2010. 
  12. Istoria datelor de lansare și publicare Unicode
  13. Versiuni enumerate
  14. Despre versiuni
  15. Unicode® 1.0  . Consorțiul Unicode . Preluat: 8 decembrie 2017.
  16. ↑ Unicode Data 1.0.0  . Preluat la 4 decembrie 2017.
  17. ↑ Unicode Data 1.0.1  . Preluat la 4 decembrie 2017.
  18. Unicode® 1.1  . Consorțiul Unicode . Preluat: 8 decembrie 2017.
  19. ↑ Unicode Data 1995  . Preluat la 4 decembrie 2017.
  20. Unicode  2.0.0 . Consorțiul Unicode . Preluat: 8 decembrie 2017.
  21. ↑ Unicode Data 2.0.14  . Preluat la 4 decembrie 2017.
  22. Unicode  2.1.0 . Consorțiul Unicode . Preluat: 8 decembrie 2017.
  23. ↑ Unicode Data 2.1.2  . Preluat la 4 decembrie 2017.
  24. Unicode  3.0.0 . Consorțiul Unicode . Preluat: 8 decembrie 2017.
  25. ↑ Unicode Data 3.0.0  . Preluat la 4 decembrie 2017.
  26. Unicode 3.1.0  . Consorțiul Unicode . Preluat: 8 decembrie 2017.
  27. ↑ Unicode Data 3.1.0  . Preluat la 4 decembrie 2017.
  28. Unicode 3.2.0  . Consorțiul Unicode . Preluat: 8 decembrie 2017.
  29. ↑ Unicode Data 3.2.0  . Preluat la 4 decembrie 2017.
  30. Unicode 4.0.0  . Consorțiul Unicode . Preluat: 8 decembrie 2017.
  31. ↑ Unicode Data 4.0.0  . Preluat la 4 decembrie 2017.
  32. Unicode  4.1.0 . Consorțiul Unicode . Preluat: 8 decembrie 2017.
  33. ↑ Unicode Data 4.1.0  . Preluat la 4 decembrie 2017.
  34. Unicode 5.0.0  . Unicode Consortium (14 iulie 2006). Preluat: 8 decembrie 2017.
  35. ↑ Unicode Data 5.0.0  . Preluat la 4 decembrie 2017.
  36. Unicode 5.1.0  . Unicode Consortium (4 aprilie 2008). Preluat: 8 decembrie 2017.
  37. ↑ Unicode Data 5.1.0  . Preluat la 4 decembrie 2017.
  38. Unicode® 5.2.0  . Unicode Consortium (1 octombrie 2009). Preluat: 8 decembrie 2017.
  39. Unicode Data  5.2.0 . Preluat la 4 decembrie 2017.
  40. Unicode® 6.0.0  . Unicode Consortium (11 octombrie 2010). Preluat: 8 decembrie 2017.
  41. Unicode Data  6.0.0 . Preluat la 4 decembrie 2017.
  42. Unicode® 6.1.0  . Unicode Consortium (31 ianuarie 2012). Preluat: 8 decembrie 2017.
  43. ↑ Unicode Data 6.1.0  . Preluat la 4 decembrie 2017.
  44. Unicode® 6.2.0  . Unicode Consortium (26 septembrie 2012). Preluat la 7 decembrie 2017.
  45. ↑ Unicode Data 6.2.0  . Preluat la 4 decembrie 2017.
  46. Unicode® 6.3.0  . Unicode Consortium (30 septembrie 2012). Preluat la 7 decembrie 2017.
  47. ↑ Unicode Data 6.3.0  . Preluat la 4 decembrie 2017.
  48. Unicode® 7.0.0  . Unicode Consortium (16 iunie 2014). Preluat: 8 decembrie 2017.
  49. Unicode Data  7.0.0 . Preluat la 4 decembrie 2017.
  50. Unicode® 8.0.0  . Unicode Consortium (17 iunie 2015). Preluat: 8 decembrie 2017.
  51. ↑ Unicode Data 8.0.0  . Preluat la 4 decembrie 2017.
  52. Unicode® 9.0.0  . Unicode Consortium (21 iunie 2016). Preluat: 8 decembrie 2017.
  53. ↑ Unicode Data 9.0.0  . Preluat: 6 decembrie 2017.
  54. Unicode® 10.0.0  . Unicode Consortium (27 iunie 2017). Preluat: 8 decembrie 2017.
  55. ↑ Unicode Data 10.0.0  . Preluat la 7 decembrie 2017.
  56. ↑ Unicode Data 11.0.0  . Data accesului: 12 aprilie 2019.
  57. Blogul Unicode: Anunțarea standardului Unicode®, versiunea 11.0
  58. Unicode 11.0.0
  59. Blogul Unicode: Anunțarea Standardului Unicode®, versiunea 12.0
  60. Unicode 12.0.0
  61. Blogul Unicode: Versiunea Unicode 12.1 lansată în sprijinul erei Reiwa
  62. Unicode 12.1.0
  63. Blogul Unicode: Anunțarea standardului Unicode, versiunea 13.0
  64. Unicode 13.0.0
  65. Foaia de parcurs către TIP (Planul ideologic terțiar)
  66. Politica de stabilitate a codificării caracterelor Unicode
  67. 1 2 Întrebări frecvente - Emoji & Dingbats
  68. Instrucțiuni pentru trimiterea propunerilor Unicode® Emoji
  69. Normalizare Unicode
  70. GitHub - FortAwesome/Font-Awesome: Setul de instrumente emblematic SVG, font și CSS
  71. Copie arhivată (link nu este disponibil) . Consultat la 27 februarie 2007. Arhivat din original pe 29 octombrie 2006.    (Engleză)
  72. Majusculele Unicode sunt complicate
  73. Majoritatea fonturilor pentru PC implementează numerele monospațiate „majuscule”.
  74. În unele cazuri, un document (nu text simplu) în Unicode poate ocupa mult mai puțin spațiu decât un document într-o codificare pe un singur octet. De exemplu, dacă o anumită pagină web conține aproximativ părți egale de text în limba rusă și greacă, atunci într-o codificare pe un singur octet, va trebui să scrieți fie litere rusești, fie litere grecești folosind capacitățile formatului documentului, sub formă de coduri cu un ampersand, care ia 6-7 octeți pe caracter (când se folosesc coduri zecimale), adică, în medie, vor fi 3,5-4 octeți pe literă, în timp ce UTF-8 ia doar 2 octeți pe literă greacă sau rusă.
  75. Unul dintre fișierele de font Arial Unicode are 24 de megaocteți; Există un Times New Roman de 120 de megaocteți, conține un număr de caractere apropiat de 65536.

Link -uri