Unicode este un standard computerizat care permite schimbul de texte în diferite limbi, la nivel global. Este dezvoltat de Consorțiul Unicode , care urmărește codificarea textului scris prin acordarea oricărui caracter din orice sistem de scriere un nume și un identificator numeric, într-o manieră unificată, indiferent de platforma computerului sau de software - ul utilizat.
Acest standard este legat de standardul ISO / IEC 10646 care descrie un tabel de caractere echivalente. Cea mai recentă versiune, Unicode 13.0 , a fost lansată înmartie 2020.
Complet compatibil cu setul de caractere universal (UIC) din ISO / IEC 10646 , standardul Unicode îl extinde prin adăugarea unui model complet de reprezentare și procesare de text, oferind fiecărui caracter un set de proprietăți (care pot fi fie pentru unele standardizate și stabilizate în toate versiunile Unicode în care caracterul a fost codificat sau informativ, cu doar o recomandare privind utilizarea lor, care poate evolua în funcție de noile nevoi găsite). Aceste proprietăți descriu cu precizie relațiile semantice care pot exista între mai multe caractere succesive ale unui text și fac posibilă standardizarea sau recomandarea algoritmilor de procesare care păstrează cât mai mult posibil semantica textelor transformate. Unicode își propune să facă același text utilizabil identic pe sisteme informatice total diferite.
Standardul Unicode constă dintr-un repertoriu de 143.859 de caractere, care acoperă mai mult de 150 de scripturi, un set de tabele de coduri pentru referințe vizuale, o metodă de codificare și mai multe codificări de caractere standard, o proprietate a caracterelor de enumerare (majuscule, litere mici, APL , simboluri, punctuație , etc. ) , a unui set de fișiere de date informatice de referință, precum și o serie de elemente conexe, cum ar fi regulile de normalizare, descompunerea bi-direcțională, sortare, redare și ordinea de afișare (pentru afișarea corectă a textului care conține atât stânga la dreapta la caractere script, cum ar fi araba și ebraica, și de la stânga la dreapta).
În practică, Unicode încorporează pe deplin ISO / IEC 10646 , deoarece acesta din urmă standardizează numai caractere individuale atribuindu-le un nume și un număr normativ (numit punct de cod ) și o descriere informativă foarte limitată, dar fără prelucrare sau specificație. utilizați în scrierea limbajelor reale, pe care doar standardul Unicode le definește cu precizie. ISO / IEC 10646 este referire la părți ale normativ standardului Unicode (inclusiv cele bidirecțională algoritm și caractere proprietăți (în) ); Unicode este, de asemenea, un standard de facto pentru procesarea textelor și servește ca bază pentru multe alte standarde.
Limbi scrise:
Abjad (limbi semitice)
Unicode, a cărui primă publicație datează din Octombrie 1991, a fost dezvoltat pentru a înlocui utilizarea paginilor de cod naționale.
Aceste pagini de cod au avut unele probleme în trecut. De exemplu, pe 3270 de terminale care funcționează în EBCDIC : atunci când o notă electronică include un caracter „semn de monedă”, același text plafonând o cheltuială în dolari pentru cititorul american ar afișa pe un ecran britanic aceeași sumă în lire sterline , deoarece moneda semnul era diferit în fiecare dintre cele două țări.
În practică, toate sistemele de scriere nu sunt încă prezente, deoarece lucrările de cercetare documentară cu specialiști se pot dovedi necesare pentru personaje rare sau sisteme de scriere puțin cunoscute (deoarece au dispărut, de exemplu).
Cu toate acestea, sunt reprezentate scenariile cele mai utilizate în lume, precum și reguli privind semantica personajelor , compozițiile lor și modul de combinare a acestor sisteme diferite. - De exemplu, cum se introduce un sistem de scriere de la dreapta la stânga într-un sistem de scriere de la stânga la dreapta ( text bidirecțional ).
În forma sa UTF-8, Unicode oferă o anumită interoperabilitate cu codul ASCII .
Standardul Unicode definește cerințele pentru evaluarea conformității implementării unui proces (sau software) la Unicode . Aceste cerințe se referă în special (în versiunea 4.0 ):
Aceste cerințe permit suport pentru un subset de Unicode.
În timp ce ISO / IEC 10646 definește același set de caractere ca Unicode, diferența dintre ISO / IEC 10646 și Unicode se datorează în principal cerinței de conformitate în exces prevăzută de Unicode.
Unicode este în 2016 cel mai important standard pentru codificarea caracterelor computerului. Este folosit pentru interoperabilitatea software-ului și permite, de exemplu, să copiați texte folosind caractere din diferite alfabete între diferite programe, chiar și nu special concepute pentru acestea (de exemplu, un program în caractere APL într-un text LibreOffice sau într-un e-mail în Gmail ). Cu toate acestea, nu toate textele Unicode sunt codificate la fel. În funcție de standardizarea Unicode adoptată, același semn grafic poate fi uneori codificat în moduri diferite. Unele texte utiliza NFC Convenția , celorlalți NZP convenția , etc. Iar standardul nu interzice amestecarea mai multor convenții în același text. Același lucru este valabil și pentru software.
Această coexistență a mai multor moduri de a scrie același lucru a fost exploatată de hackeri în anii 2000, permițându-le să ocolească filtrele: hackerii au ocolit interdicțiile anumitor șiruri considerate periculoase pur și simplu prin codificarea lor într-o altă formă., Mai neobișnuit și, prin urmare, uneori nefiltrat.
Unicode răspunde la aceste limitări oferind noțiunea de echivalență canonică .
Lucrarea la Unicode este paralelă și sincronizată cu cea din standardul ISO / IEC 10646 ale cărei obiective sunt aceleași. ISO / IEC 10646 , un standard internațional publicat în franceză și engleză, care nu specifică regulile de compoziție a caracterelor, sau proprietățile semantice ale personajelor.
Unicode abordează totuși problema majusculelor , a ordonării alfabetice și a combinației de accente și caractere . De la versiunea Unicode 1.1 și în toate versiunile ulterioare, caracterele au aceiași identificatori ca cei ai standardului ISO / IEC 10646 : directoarele sunt menținute în paralel, identice în timpul standardizării lor finale, cele două standarde fiind actualizate aproape simultan. Cele două standarde Unicode (începând cu versiunea 1.1 ) și ISO / IEC 10646 asigură compatibilitate totală înapoi: orice text care este conform unei versiuni anterioare trebuie să rămână conform în versiunile ulterioare.
Astfel, caracterele versiunii Unicode 3.0 sunt cele ale standardului ISO / IEC 10646: 2000 . Versiunea 3.2 a Unicode clasat 95,221 caractere, simboluri și directive.
Versiunea 4.1 a Unicode, actualizatenoiembrie 2005, conține:
adică un total de aproape 245.000 puncte de cod atribuite într-un spațiu care poate conține 1.114.112 coduri diferite.
Unele probleme par să existe, totuși, pentru codificarea caracterelor chinezești , datorită unificării seturilor ideografice utilizate în diferite limbi, cu caligrafie ușor diferită și uneori semnificativă, dar acestea sunt rezolvate de Unicode care are definite selectoare. a deschis un registru de secvențe standard care le folosește.
Versiune | Data publicării | Personaje noi |
---|---|---|
1.0.0 | Octombrie 1991 | |
1.0.1 | Iunie 1992 | |
1.1 | Iunie 1993 | |
2.0 | Iulie 1996 | |
2.1 | Mai 1998 | |
3.0 | Septembrie 1999 | |
3.1 | Martie 2001 | |
3.2 | Martie 2002 | |
4.0 | Aprilie 2003 | |
4.1 | Martie 2005 | |
5.0 | iulie 2006 | |
5.1 | Martie 2008 | |
5.2 | octombrie 2009 | |
6.0 | februarie 2011 | |
6.1 | 31 ianuarie 2012 | |
7.0 | 16 iunie 2014 | 2.834 de personaje noi, inclusiv emoji . |
8.0 | 17 iunie 2015 | 7.716 caractere, inclusiv multe emoji. |
9.0 | 21 iunie 2016 | 7.500 de personaje noi (inclusiv 72 de emoji). |
10.0 | 20 iunie 2017 | 8.518 personaje noi (inclusiv 56 de emoji). |
11.0 | 5 iunie 2018 | 684 de personaje noi (inclusiv 66 de emoji). |
12.0 | 5 martie 2019 | 554 de personaje noi. |
13.0 | 10 martie 2020 | 5.390 de personaje noi |
Unicode este definit în conformitate cu un model stratificat ( Notă tehnică Unicode nr . 17 ). Alte standarde de obicei nu făceau distincție între setul de caractere și reprezentarea fizică. Straturile sunt prezentate aici începând de la cel mai înalt (cel mai îndepărtat de mașină).
Directorul personajelor abstracte ( repertoriu de caractere astract )Stratul superior este definiția setului de caractere. De exemplu, Latin-1 are un set de 256 de caractere, în timp ce Unicode standardizează în prezent aproape 110.000 de caractere. În plus, Unicode atribuie un nume fiecăruia dintre aceste caractere.
Prin urmare, lista de caractere cu numele lor constituie stratul de aplicație Unicode.
De exemplu, caracterul Ç poartă numele de „majusculă latină c cedilla”.
Această definiție este complet identică cu cea a ISO / IEC 10646, care aprobă orice extensie a directorului. Unicode folosește doar numele normative în limba engleză în textul standardului său, dar standardul ISO / IEC 10646 este publicat în două limbi la fel de normative. Astfel, numele în engleză și franceză sunt ambele standardizate.
De fapt, orice extensie a directorului se face acum în comun între grupul de lucru responsabil pentru ISO / IEC 10646 ( JTC1 / SC2 / WG2 , ai cărui membri votanți sunt doar autoritățile naționale de standardizare din țările participante sau reprezentantul lor oficial) și Comitetul tehnic Unicode UTC (ai cărui membri votanți pot fi orice organizație privată sau de interes public sau chiar un guvern, care s-a alăturat și plătește o taxă anuală pentru a participa la aceste decizii).
Set de caractere codate ( set de caractere codate )Aici, un număr asociat fiecărui caracter este adăugat la tabelul anterior. Rețineți că aceasta nu este o reprezentare în memorie, ci doar un număr întreg, numit punct de cod . Spațiul de codare pentru aceste numere este împărțit în 17 zone de 65.536 puncte de cod. Aceste zone se numesc avioane .
Punctul de cod este notat „U + xxxx”, unde „xxxx” este hexazecimal și are 4 până la 6 cifre :
Astfel, caracterul numit „majusculă latină c cedilla” (Ç) are numărul U + 00C7. Aparține în prim plan.
În principiu, toate punctele de cod între U + 0000 și U + 10FFFF sunt disponibile, dar anumite intervale sunt rezervate perpetuu pentru anumite utilizări, în special o zonă de indirecție exclusă pentru a permite codificarea UTF-16 (a se vedea mai jos), zonele pentru uz privat și unele regiuni (de exemplu, U + FFFE sau U + FFFF) care conțin non-caractere a căror utilizare este interzisă într-un schimb de date conform. Celelalte puncte de cod sunt fie deja atribuite caracterelor, fie rezervate pentru standardizarea viitoare.
Zonă pentru uz privat: Unicode a atribuit numeroase puncte de cod caracterelor valide, dar a căror semantică este necunoscută din cauza utilizării private (de exemplu, ultimele două planuri între U + F0000 și U + 10FFFF sunt dedicate în totalitate acestei utilizări, cu excepția celor două coduri puncte la sfârșitul fiecărui plan care sunt interzise necaractere în textul conform).
Din nou, standardizarea codării, adică atribuirea punctelor de cod caracterelor din repertoriul comun este o decizie comună partajată între standardele Unicode și ISO / IEC 10646 . Toate caracterele din director au un punct de cod unic (chiar dacă pentru unele limbi sau pentru Unicode unele caractere sunt considerate echivalente).
Se poate observa că, dacă directorul de caractere este extensibil, acesta este limitat de limita superioară a spațiului de codare: U + 10FFFF. O mare majoritate a punctelor de cod posibile nu sunt asociate cu niciun caracter particular, dar pot fi în orice moment.
De asemenea, aceste puncte de cod încă libere nu sunt considerate nevalide, dar reprezintă caractere abstracte (nespecificate încă și rezervate temporar). Aceste caractere abstracte (precum și caracterele de uz privat) completează setul de caractere codificate din directorul standardizat într-un singur joc numit „ set de caractere codate universal ” ( Universal Coded Character Set , prescurtat deseori ca UCS ) care conține toate seturile de caractere codate ale directoarelor a fiecărei versiuni anterioare, prezente și viitoare ale ISO / IEC 10646 și Unicode (numai din versiunea 1.1 ).
Formalism encoding caractere ( formă de codare a caracterelor )De data aceasta, ajungem la o reprezentare fizică (în memorie, pe disc etc.): acest strat specifică care unitate de codare ( unități de cod ) sau codet va reprezenta un caracter sau mai exact un punct de cod: octet , seizet (în ) (Cuvânt pe 16 biți) sau treizeci de deuzet (ro) (cuvânt pe 32 de biți).
Pot exista (și există) mai multe dintre aceste formalisme. Un anumit formalism trebuie să specifice dimensiunea unității de codare și să indice modul în care numărul întreg care reprezintă un punct de cod este reprezentat într-o serie de unități de codificare - și invers, adică cum să găsim punctul de cod având o secvență de unități de codificare.
Caracterele de serializare mecanism ( schemă de codificare a caracterelor )Acest strat se ocupă de serializarea secvențelor unităților de codare definite de stratul anterior în secvențe de octeți. Aici se alege ordinea octeților între big-endian (cel mai semnificativ octet întâi) și puțin endian (cel mai puțin semnificativ octet întâi).
De asemenea, la acest pas este posibil să adăugați un indicator de ordine de octeți (sau BOM, pentru marca de ordine de octeți ), care indică la începutul fișierului sau fluxului de date dacă este în big-endian sau în little-endian. În lumea Internetului, este rar folosit, preferând un markup explicit („ charset = UTF-16BE ” în MIME , de exemplu, pentru a indica un flux de date big-endian, unde BE înseamnă big endian ).
Transfer de supracodificare ( sintaxa de codificare a transferului )Aici, mecanisme opționale de compresie sau criptare.
Poate exista, de asemenea, o supracodificare, cum ar fi pentru LDAP, care specifică că șirurile Unicode ar trebui codificate în UTF-8 și supracodificate în Base64 .
Pentru a depăși constrângerile rigide ale standardelor anterioare (o succesiune de biți, o reprezentare), Unicode separă de acum înainte pe de o parte definiția setului de caractere (lista de caractere după numele lor) și indexul lor, punctul de cod , al codării . Prin urmare, nu putem vorbi de dimensiunea unui caracter Unicode, deoarece depinde de codificarea aleasă și, prin urmare, aceasta poate varia după bunul plac. În practică, UTF-8 este utilizat pe scară largă în țările occidentale.
În cazul în care ASCII folosește 7 biți și ISO / IEC 8859-1 8 biți (la fel ca majoritatea paginilor de coduri naționale), Unicode, care colectează caracterele din fiecare pagină de cod, trebuia să utilizeze mai mult de 8 biți pe un octet . Limita a fost inițial stabilită la 16 biți pentru versiunile anterioare ale Unicode și 32 de biți pentru versiunile anterioare ale ISO / IEC 10646 .
Limita actuală este acum plasată între 20 și 21 de biți pentru fiecare punct de cod atribuit caracterelor standardizate în cele două standarde acum compatibile reciproc:
Unicode și ISO / IEC 10646 acceptă mai multe forme de transformare universală pentru a reprezenta un punct de cod valid. Să ne cităm:
Numărul după UTF reprezintă numărul minim de biți de puncte de cod cu care este reprezentat un punct de cod valid.
Aceste transformări au fost inițial create pentru reprezentarea internă și schemele de codare a punctelor de cod din ISO / IEC 10646 , care inițial ar putea defini puncte de cod pe 31 de biți. De atunci, standardul ISO / IEC 10646 a fost modificat, astfel încât cele trei forme să fie pe deplin compatibile între ele și să permită codificarea tuturor punctelor de cod (deoarece UTF-16 permite doar punctele de cod din primele 17 planuri să fie reprezentat).
Unicode a standardizat foarte strict aceste trei forme de transformare a tuturor punctelor de cod valide (U + 0000 la U + D7FF și U + E000 la U + 10FFFF) și numai ele, indiferent dacă reprezintă textul în secvențele de puncte de cod sau puncte de cod atribuite caracterelor valide sau rezervate sau atribuite non-caractere. Punctele de cod atribuite jumătăților de zone (U + D800 până la U + DFFF), utilizate numai în UTF-16, sunt nevalide individual deoarece sunt utilizate pentru a reprezenta, printr-o pereche de 2 puncte de cod pe 16 biți, punctele de cod pentru cele 16 planuri suplimentare.
UTF-8UTF-8 , specificat în RFC 3629, este aplicațiile cele mai comune pentru Unix și Internet . Codificarea sa de dimensiuni variabile îi permite să fie în medie mai puțin costisitoare în utilizarea memoriei (pentru limbile cu alfabet latin). Dar acest lucru încetinește în mod semnificativ în jos operațiunile care implică extracții sub-string în unele limbi care siruri de caractere index de numere întregi (exemplu = „815 - lea caracter al șirului“), deoarece este necesar pentru a număra caracterele de la începutul șirului pentru a ști unde este primul caracter de extras.
UTF-8 oferă, și acesta este principalul său avantaj, compatibilitatea cu manipularea simplă a șirurilor în ASCII în limbaje de programare . Astfel, programele scrise în C pot rula adesea fără modificări.
Inițial, UTF-8 putea codifica orice punct de cod între U + 0000 și U + 7FFFFFFF (deci până la 31 de biți). Această utilizare este depreciată și standardul ISO / IEC 10646 a fost modificat pentru a suporta doar punctele de cod valide ale primelor 17 fotografii, cu excepția celor din jumătatea zonei corespunzătoare elementelor de cod utilizate în UTF-16 pentru reprezentarea pe două coduri elemente.puncte de cod ale celor 16 planuri suplimentare. De asemenea, cele mai lungi secvențe din UTF-8 necesită maximum 4 octeți, în loc de 6 anterior. În plus, UTF-8 a fost modificat mai întâi de Unicode și apoi de ISO / IEC 10646 pentru a accepta doar cea mai scurtă reprezentare a fiecărui punct de cod ( unicitatea codării). Faptul de a putea reprezenta în mai multe moduri diferite același personaj punea probleme de securitate, deoarece hackerul putea ocoli o formă „filtrată” printr-o altă scriere.
Avantajul său față de UTF-16 (și UTF-32) este că diferențele în ordinea octeților care alcătuiesc un cuvânt ( endianness ) nu reprezintă o problemă într-o rețea de sisteme eterogene; astfel, această transformare este utilizată astăzi de majoritatea protocoalelor de schimb standardizate.
Pe de altă parte, UTF-8 este pe deplin compatibil pentru transmiterea textelor prin protocoale bazate pe setul de caractere ASCII sau poate fi compatibilizat (cu prețul unei transformări multi-octet a caracterelor non-ASCII) cu protocoale de schimb care acceptă Seturi de caractere codate pe 8 biți (indiferent dacă sunt bazate pe ISO / IEC 8859 sau multe alte seturi de caractere codate pe 8 biți definite de standardele naționale sau de sistemele proprietare particulare).
Principalul său dezavantaj este codarea lungimii foarte variabile (1 octet pentru punctele de cod atribuite caracterelor ASCII - ISO / IEC 646 , 2 până la 4 octeți pentru celelalte puncte de cod), chiar dacă sincronizarea automată specifică UTF-8 codificarea face posibilă determinarea începutului unei secvențe dintr-o poziție aleatorie (efectuând cel mult 3 citiri suplimentare ale punctelor de cod precedente). Cu toate acestea, această codificare nu este concepută pentru a facilita procesarea șirurilor de caractere: de multe ori preferăm UTF-16, uneori UTF-32 (lacom în memorie).
DerivateUTF-16 este un compromis bun atunci când spațiul de memorie nu este prea mic, pentru că marea majoritate a caracterelor Unicode atribuite scrierile limbilor moderne (inclusiv cele mai frecvent utilizate caractere) sunt în baza planului de mai multe limbi și , prin urmare , poate fi reprezentat pe 16 biți. Versiunea franceză a ISO / IEC 10646 numește aceste cuvinte pe 16 biți „seizets”, dar versiunea internațională le descrie totuși drept cuvinte clasice pe 16 biți compuse din doi octeți și supuse regulilor obișnuite ale endismului .
hi \ lo | DC00 | DC01 | ... | DFFF |
---|---|---|---|---|
D800 | 10.000 | 10001 | ... | 103FF |
D801 | 10400 | 10401 | ... | 107FF |
⋮ | ⋮ | ⋮ | ⋱ | ⋮ |
DBFF | 10FC00 | 10FC01 | ... | 10FFFF |
Punctele de cod ale celor șaisprezece planuri suplimentare necesită o transformare pe două cuvinte pe 16 biți:
Deoarece majoritatea caracterelor utilizate în mod obișnuit se află în planul de bază, codificarea clipurilor suplimentare este adesea prost testată în software, ducând la erori sau probleme de securitate chiar și în software-ul distribuit pe scară largă. Anumite cadre legale, cum ar fi GB 18030 , pot solicita sprijinul unor planuri suplimentare, acestea conținând în special caractere prezente în nume proprii.
Este posibil să se determine începutul secvenței de codare din orice punct al unui text reprezentat în UTF-16 efectuând cel mult o citire suplimentară, numai dacă acest punct de cod este în jumătatea inferioară. Această formă este mai economică și mai ușor de procesat rapid decât UTF-8 pentru reprezentarea textelor care conțin câteva caractere ASCII (U + 0000 până la U + 007F).
Cu toate acestea, această transformare are două scheme de codificare incompatibile care depind de ordonarea octeților în reprezentarea de 16 biți întregi. Pentru a rezolva această ambiguitate și a permite transmiterea între sisteme eterogene, este necesar să adăugați informații care să indice schema de codare utilizată (UTF-16BE sau UTF-16LE) sau să prefixați textul codificat cu reprezentarea punctului de cod. Valid U + FEFF (atribuit caracterului „spațiu neîntrerupt de lățime zero”, un caracter rezervat acum pentru această singură utilizare ca marker de comandă a octetului), deoarece punctul de cod „inversat” U + FFFE valid este un non-caracter, interzis în texte conforme cu Unicode și ISO / IEC 10646 .
Celălalt defect al UTF-16 este că textul transformat odată cu acesta și transmis cu oricare dintre cele două scheme de codificare conține un număr mare de octeți care sunt nuli sau au o valoare care intră în conflict cu valorile d. 'Octeți rezervați de anumite protocoale de schimb.
Aceasta este în special codificarea pe care platforma Java o folosește intern, precum și Windows pentru API-urile sale compatibile Unicode (cu tipul wchar).
UTF-32UTF-32 este utilizat atunci când spațiul de memorie nu este o problemă și trebuie să aibă acces la caractere în mod direct și fără schimbare în dimensiune ( hieroglife egiptene ).
Avantajul acestei transformări standardizate este că toate elementele de cod au aceeași dimensiune. Prin urmare, nu este necesar să citiți puncte de cod suplimentare pentru a determina începutul reprezentării unui punct de cod.
Cu toate acestea, acest format este deosebit de neeconomic (inclusiv în memorie), deoarece „irosește” inutil cel puțin un octet (întotdeauna zero) pe caracter. Dimensiunea în memorie a unui text are un efect negativ asupra performanței, deoarece necesită mai multe citiri și scrieri pe disc în caz de memorie RAM completă și, de asemenea, reduce performanța memoriei cache a procesoarelor.
Pentru textele scrise în limbile moderne actuale (în afară de anumite caractere rare ale planului ideografic suplimentar) și, prin urmare, folosind numai punctele de cod ale planului de bază multilingv, această transformare dublează cantitatea de memorie necesară în comparație cu UTF-16.
La fel ca UTF-16, UTF-32 are mai multe scheme de codificare în funcție de ordinea octeților care compun un număr întreg de mai mult de 8 biți (două scheme de codare ale UTF-32 sunt standardizate, UTF-32BE și UTF-32LE). Prin urmare, este necesar, de asemenea, să specificați această schemă de codificare sau să o determinați prefixând textul prin reprezentarea în UTF-32 a punctului de cod U + FEFF. La fel ca UTF-16, prezența octeților nuli în schemele de codificare standardizate ale UTF-32 îl face incompatibil cu multe protocoale pentru schimbul între sistemele eterogene.
De asemenea, acest format este utilizat cel mai adesea doar foarte local pentru anumite prelucrări ca o formă intermediară care este mai ușor de manipulat și preferăm deseori transformarea UTF-16, care este adesea mai eficientă pentru procesarea și stocarea unor cantități mari de texte, conversia între cele două fiind foarte simple de realizat și foarte ieftine în ceea ce privește complexitatea procesării.
De fapt, multe biblioteci de procesare a textelor sunt scrise numai cu UTF-16 și sunt mai eficiente decât UTF-32, chiar și atunci când textele conțin caractere de planuri suplimentare (deoarece acest caz de cifră rămâne rar în marea majoritate a cazurilor).
Rețineți, totuși, că transformarea în UTF-32 utilizează puncte de cod pe 32 de biți, dintre care multe nu pot reprezenta niciun punct de cod valid (valori în afara celor două intervale reprezentând punctele de cod valide U + 0000 la U + D7FF și U + De la E000 la U + 10FFFF), prin urmare nu există un caracter valid sau rezervat (orice informație conținută în acesta nu poate fi, prin urmare, text în sens Unicode). Transmiterea textelor care utilizează aceste valori de cod nevalide într-una dintre schemele de codificare standardizate ale UTF-32 este interzisă pentru orice sistem conform Unicode (este necesar să se utilizeze punctele de cod pentru uz privat în loc), deoarece va fi imposibil pentru a le reprezenta într-o altă transformare UTF cu care cele trei UTF standardizate sunt compatibile bijectiv.
Aceasta este o transformare a Unicode care nu este definită de Consorțiul Unicode, ci de administrația standardelor din China, unde suportul său este obligatoriu în aplicații. Din punct de vedere istoric, acesta a fost un set de caractere codificat, care a fost extins pentru a susține întregul repertoriu UCS printr-o transformare algoritmică care completează un tabel mare de corespondență de la cod la cod.
Afirmarea faptului că Unicode codifică caractere înseamnă a afirma că atribuie un număr simbolurilor abstracte, conform unui principiu de codificare logică. Unicode, pe de altă parte, nu codifică reprezentări grafice ale personajelor, glifelor . Prin urmare, nu există nicio bijecție între reprezentarea personajului și numărul acestuia, deoarece toate variațiile grafice ale stilului sunt unificate.
În plus, spre deosebire de un font clasic ASCII sau latin-1 , selectarea unui glif printr-un cod nu este unică și este adesea contextuală și poate afișa același glif pentru coduri diferite. Astfel, caracterul francez „é” poate fi descris în două moduri: fie folosind direct numărul corespunzător „é”, fie urmând numărul „e” cu cel al accentului acut fără vânătoare. Indiferent de opțiunea pe care o alegeți, va fi afișat același glif. Vom spune despre primul caracter că este precompus, despre al doilea că este o compoziție (două caractere formează un singur glif compus din ambele). Acest lucru este permis și chiar foarte recomandat, deoarece diferitele forme de codificare sunt clasificate de Unicode ca „echivalent canonic”, ceea ce înseamnă că două forme echivalente de codificare ar trebui tratate identic.
Multe caractere compozite sunt în acest caz și pot fi codificate în aceste două moduri (sau mai multe, unele caractere compozite pot fi descompuse în mai multe moduri, mai ales atunci când au mai multe diacritice). Cel mai adesea, caracterul precompus este preferabil pentru codarea textului, dacă acesta există (acesta este cazul grecii politonice , de exemplu, care, codificat în descompunere, poate să nu fie satisfăcător din punct de vedere grafic: în funcție de caracterele fonturilor, diferitele constituenții glifului fiind uneori slab aranjați și dificil de citit). Cu toate acestea, nu toate caracterele compuse au un punct de cod unic pentru forma lor precompusă.
De asemenea, unele sisteme de scriere, cum ar fi Devânagarî , persană sau arabă , necesită un tratament complex al ligaturilor : grafemele își schimbă forma în funcție de poziția lor sau de vecinii lor (a se vedea varianta contextuală și litera comună ). Selectarea glifului corect necesită procesare pentru a determina ce formă contextuală trebuie selectată în font, chiar dacă toate formele contextuale sunt codificate identic în Unicode.
Din aceste motive, un font Unicode trebuie manipulat cu grijă. De exemplu, un font cu toate glifele existente nu este suficient. De asemenea, este necesar ca sistemul de afișare ( motorul de redare ) să dețină mecanismele capabile să proceseze ligaturi , variante contextuale și forme comune specifice anumitor limbi. Dimpotrivă, un font care reprezintă doar o parte din caractere, dar știe cum să le afișeze corect, merită mai bine titlul de „font Unicode”. În cele din urmă, anumite constrângeri tehnice ale formatelor de fonturi le pot împiedica să accepte întregul director. În practică, este imposibil (în 2009) să găsești un singur font care să susțină întregul director.
Un font de caractere Unicode este deci doar un font care face posibilă afișarea directă a unui text codificat în toate formele autorizate de Unicode și care face posibilă acceptarea unui subset coerent adaptat la una sau mai multe limbi pentru a susține unul sau mai multe scripturi. Niciun tip Unicode nu poate „funcționa” singur, iar suportul complet de scriere necesită suport pentru acestea într-un motor de redare , capabil să detecteze forme de codificare echivalente, să caute forme contextuale în text și să selecteze diferitele glifuri ale unui font codat cu Unicode, folosind tabelele de corespondență incluse în fontul în sine, dacă este necesar.
ATI cross-platform biblioteca software - ul vă permite să manipuleze date codificate cu Unicode. Suportul Unicode specific platformei este, de asemenea, integrat de sisteme moderne ( Java , Microsoft Windows , GNU / Linux , biblioteci standard C / C ++ , Python etc.).
Tipurile de utilizat pentru stocarea variabilelor Unicode sunt:
Limbaj de programare | Tastați pentru un singur caracter | Tastați pentru orice text |
---|---|---|
VS | char[4] Unde wchar_t[2] | char[] Unde wchar_t[] |
C ++ | char[4] Unde wchar_t[2] | char[]sau wchar_t[]sau std::stringsaustd::wstring |
Java | char[2] Unde int | char[] Unde String |
Biblioteca ICU (pentru C / C ++ sau Java) | UChar | UChar[]sau String,UnicodeString |
JavaScript sau ECMAScript | char | string |
C # sau J # | char | string |
Delphi | char[4] Unde widechar[2] | string Unde widestring |
Python 2 | unicode | |
Python 3 | str | |
Merge | rune(= int32) | string Unde []byte |
Rapid | Character | String |
Unicode, totuși, încă suferă de un suport slab pentru expresiile regulate de către unele programe, deși bibliotecile precum ICU și Java le pot suporta. Un astfel de suport nu a fost încă standardizat pentru ECMAScript și este furnizat numai cu ajutorul bibliotecilor create cu limbajul sau interfețele pentru interoperabilitate cu alte sisteme (în special cu CORBA , COM ) sau limbaje (în special C ++ și Java ).
Partiționarea actualizată poate fi găsită pe site-ul oficial Unicode. Cu toate acestea, având în vedere rolul important al Unicode-ului de astăzi ( ISO / IEC 10646 ), blocurile de caractere principale vor fi descrise aici. Numele franceze sunt numele oficiale ale ISO / IEC 10646 , standardul bilingv internațional care folosește aceleași caractere ca Unicode. Sunt la fel de oficiali ca numele englezești.
Vechiul standard Unicode 1.0 este învechit și incompatibil cu ISO / IEC 10646 și Unicode 1.1 și toate versiunile sale ulterioare; principala incompatibilitate este aceea a blocurilor de caractere Hangul utilizate pentru scrierea limbii coreene care au schimbat poziția și ale căror puncte de cod vechi au fost atribuite de atunci altor blocuri. Tabelul de mai jos este compatibil cu ISO / IEC 10646 (toate versiunile) și Unicode 1.1 (sau o versiune ulterioară).
NB Cazul numelor de blocuri nu este normativ. „Latinul de bază” este deci echivalent cu „LATINUL DE BAZĂ”.
În tabelele următoare, orice nume de bloc cu o notă referitoare la un PDF Unicode oficial înseamnă că pagina Wikipedia asociată blocului respectiv este inexistentă sau incorectă.
Plan de bază multilingv (PMB, 0000 la FFFF)Puncte de cod | Numele oficial al blocului | PDF oficial | Află mai multe | |
---|---|---|---|---|
start | Sfârșit | |||
0000 | 007F | Comenzi de bază C0 și latină | U0000 | vezi ISO / IEC 646 , ASCII , alfabet latin , caractere de control Unicode |
0080 | 00FF | Comenzi C1 și supliment Latin-1 | U0080 | vezi ISO / IEC 8859 , ISO / IEC 8859-1 , alfabet latin , caractere de verificare Unicode |
0100 | 017F | Latină extinsă A | U0100 | vezi alfabetul latin |
0180 | 024F | Latină extinsă B | U0180 | vezi alfabetul latin |
0250 | 02AF | Alfabet fonetic internațional (API) | U0250 | vezi Alfabetul fonetic internațional |
02B0 | 02FF | Litere de modificare cu lățime | U02B0 | vezi Diacritics , alfabetul latin , Diacritics al alfabetului latin , alfabetul fonetic internațional |
0300 | 036F | Diacritici | U0300 | vezi Diacritics , Diacritics din alfabetul latin , Diacritics din alfabetul grecesc , alfabetul copt , Diacritics din alfabetul chirilic |
0370 | 03FF | Greacă și coptă | U0370 | vezi Alfabetul grecesc și alfabetul copt |
0400 | 04FF | chirilic | U0400 | vezi alfabetul chirilic |
0500 | 052F | Supliment chirilic | U0500 | vezi alfabetul chirilic |
0530 | 058F | armean | U0530 | vezi Alfabetul armean |
0590 | 05FF | Ebraică | U0590 | vezi Alfabetul ebraic , Diacritics , Diacritics of the Hebrew Alfabet |
0600 | 06FF | arab | U0600 | vezi alfabetul arab |
0700 | 074F | Siriac | U0700 | vezi siriac |
0750 | 077F | Supliment arab | U0750 | vezi alfabetul arab |
0780 | 07BF | Thâna | U0780 | vezi Alfabetul Maldivian |
07C0 | 07FF | N'ko | U07C0 | vezi N'ko |
0800 | 083F | Samaritean | U0800 | vezi Alfabetul samaritean |
0840 | 085F | Mandean | U0840 | vezi Alfabetul Mandean |
0860 | 086F | Supliment siriac | U0860 | vezi siriac |
0870 | 089F | rezervă | - | - |
08A0 | 08FF | Limba arabă extinsă A | U08A0 | vezi alfabetul arab , diacritice , diacritice ale alfabetului arab |
0900 | 097F | Devanagari | U0900 | vezi Devanâgarî |
0980 | 09FF | Bengaleză | U0980 | vezi Bengalî |
0A00 | 0A7F | Gurmoukhi | U0A00 | vezi Gurmukhī |
0A80 | 0AFF | Gujarat | U0A80 | vezi alfabetul gujarati |
0B00 | 0B7F | Oriya | U0B00 | vezi Oriya |
0B80 | 0BFF | Tamilă | U0B80 | vezi Tamil |
0C00 | 0C7F | Telougou | U0C00 | vezi Telougou |
0C80 | 0CFF | Kannara | U0C80 | vezi Kannara |
0D00 | 0D7F | Malayalam | U0D00 | vezi Malayalam |
0D80 | 0DFF | Singhalese | U0D80 | vezi Singhalese |
0E00 | 0E7F | Thai | U0E00 | vezi Thai |
0E80 | 0EFF | Lao | U0E80 | vezi Lao |
0F00 | 0FFF | Tibetană | U0F00 | vezi tibetană |
1000 | 109F | Birmanez | U1000 | vezi birmanez |
10A0 | 10FF | georgian | U10A0 | a se vedea georgiană , Georgian Alfabetul |
1100 | 11FF | Jamos hangul | U1100 | vezi Hangûl |
1200 | 137F | etiopian | U1200 | vezi Alphasyllabaire geez |
1380 | 139F | Supliment etiopian | U1380 | vezi Alphasyllabaire geez |
13A0 | 13FF | Cherokee | U13B0 | vezi Silabarul Cherokee |
1400 | 167F | Silabare indigene canadiene unificate | U1400 | vezi limbile native americane |
1680 | 169F | Ogam | U1680 | vezi alfabetul oghamic |
16A0 | 16FF | Rune | U16A0 | vezi alfabetul runic |
1700 | 171F | Tagalog | U1700 | vezi Tagalog |
1720 | 173F | Hanounóo | U1720 | vezi Alfabetul Hanunóo (ro) |
1740 | 175F | Bouhide | U1740 | vezi Buhid (ro) |
1760 | 177F | Tagbanoua | U1760 | vezi Alfabetul Tagbanoua (ro) |
1780 | 17FF | Khmer | U1780 | vezi Khmer |
1800 | 18AF | mongol | U1800 | vezi mongolă |
18B0 | 18FF | Silabare indigene canadiene extinse | U18B0 | vezi limbile native americane |
1900 | 194F | Limbou | U1900 | vezi Limbou |
1950 | 197F | Tai it | U1950 | vezi Taï-le |
1980 | 19DF | Noul Taï lü | U1980 | vezi Tai lü |
19E0 | 19FF | Simboluri Khmer | U19E0 | vezi Khmer |
1A00 | 1A1F | Bougui | U1A00 | vezi Limba Bugis , Scrierea Lontarei |
1A20 | 1AAF | Tai tham | U1A20 | vezi Alphabet Taï Tham ( fr ) |
1AB0 | 1AFF | Diacritice extinse | U1AB0 | vezi Diacritic |
1B00 | 1B7F | Balinez | U1B00 | vezi scrierea balineză |
1B80 | 1BBF | Soundanese | U1B80 | vezi Soundanese , Alfabetul sudanez (en) |
1BC0 | 1BFF | Batak | U1BC0 | vezi scriptul Batak |
1C00 | 1C4F | Lepcha | U1C00 | vezi Alphabet Lepch (ro) |
1C50 | 1C7F | Ol chiki | U1C50 | vezi Alfabetul santâlî |
1C80 | 1C8F | C chirilic extins | U1C80 | vezi alfabetul chirilic , slavona bisericească |
1C90 | 1CBF | Georgian extins | U1C90 | a se vedea georgiană , Georgian Alfabetul |
1CC0 | 1CCF | Supliment Sundanese | U1CC0 | vezi Soundanese , Alfabetul sudanez (en) |
1CD0 | 1CFF | Extensii vedice | U1CD0 | vezi sanscrita |
1D00 | 1D7F | Supliment fonetic | U1D00 | vezi Alfabetul fonetic internațional |
1D80 | 1DBF | Supliment fonetic extins | U1D80 | vezi Alfabetul fonetic internațional |
1DC0 | 1DFF | Supliment pentru diacritice | U1DC0 | vezi Diacritic |
1E00 | 1EFF | Latină extinsă suplimentar | U1E00 | vezi alfabetul latin |
1F00 | 1FFF | Limba greacă extinsă | U1F00 | vezi Alfabetul grecesc , greaca politonică |
2000 | 206F | Punctuație generală | U2000 | vezi Punctuație , Spațiu |
2070 | 209F | Exponenți și indici | U2070 | vezi Exponent și Indice |
20A0 | 20CF | Simboluri valutare | U20A0 | vezi Simbolul monedei |
20D0 | 20FF | Semne combinatorii pentru simboluri | U20D0 | vezi Săgeată , rotație |
2100 | 214F | Simboluri tip literă | U2100 | vezi Temperatură , simbol matematic , simboluri ale legii mărcii |
2150 | 218F | Forme numerice | U2150 | vezi cifra romană , Fracțiune |
2190 | 21FF | Săgeți | U2190 | vezi Săgeata |
2200 | 22FF | Operatori matematici | U2200 | vezi Operatori matematici |
2300 | 23FF | Diferite semne tehnice | U2300 | vezi Alfabet grecesc , punctuație , săgeată , simboluri matematice , Emoji |
2400 | 243F | Pictograme de comandă | U2400 | vezi ISO / IEC 8859 , ISO / IEC 646 , Control C0 (en) |
2440 | 245F | Recunoaștere optică a caracterelor | U2430 | vezi Recunoașterea optică a caracterelor |
2460 | 24FF | Cercul alfanumeric | U2460 | vezi alfabetul latin , cifre arabe |
2500 | 257F | Plase | U2500 | vezi Caracterul desenului de formă (ro) |
2580 | 259F | Pavaj | U2580 | vezi Caracterul desenului de formă (în) , dreptunghi |
25A0 | 25FF | Forme geometrice | U25A0 | vezi Forma geometrică |
2600 | 26FF | Simboluri diverse | U2600 | vezi Simbol , Emoji , joc de cărți francez , Șah , simbol Gen |
2700 | 27BF | Casseau | U2700 | vezi Simbol , cifre arabe , punctuație , Emoji , operatori matematici , săgeată |
27C0 | 27EF | Simboluri matematice diverse A | U27C0 | vezi Simbol matematic |
27F0 | 27FF | Săgețile suplimentul A | U27F0 | vezi Săgeata |
2800 | 28FF | Combinații braille | U2800 | vezi Braille |
2900 | 297F | Săgețile supliment B | U2900 | vezi Săgeata |
2980 | 29FF | Simboluri matematice diverse B | U2980 | vezi Simbol matematic |
2A00 | 2AFF | Operatori matematici suplimentari | U2A00 | vezi Operatori matematici |
2B00 | 2BFF | Diverse simboluri și săgeți | U2B00 | vezi Săgeata , Emoji |
2C00 | 2C5F | Glagotic | U2C00 | vezi Alfabetul glagolitic |
2C60 | 2C7F | Latină extinsă C | U2C00 | vezi Alfabetul latin , uigur |
2C80 | 2CFF | Coptă | U2C80 | vezi alfabetul copt |
2D00 | 2D2F | Supliment georgian | U2D00 | a se vedea georgiană , Georgian Alfabetul |
2D30 | 2D7F | Tifinagh | U2D30 | vezi Limbile Tifinagh și Berber |
2D80 | 2DDF | Etiopian extins | U2D80 | vezi Alphasyllabaire geez |
2DE0 | 2DFF | Cirilic extins A | U2DE0 | vezi Alfabetul chirilic , Diacritics , Diacritics of the Cyrillic Alfabet |
2E00 | 2E7F | Supliment de punctuație | U2E00 | vezi Punctuație |
2E80 | 2EFF | Forme suplimentare de chei CJC | U2E80 | a se vedea chineză, japoneză și coreeană , Sinogramme , scris chineză , limbile chineză , scripturi japoneză , japoneză , hanja , coreeană |
2F00 | 2FDF | Cheile Kangxi chinezești | U2F00 | vezi Kangxi Character Dictionary |
2FE0 | 2FEF | rezervă | - | - |
2FF0 | 2FFF | Descriere ideografică | U2FF0 | vezi Descrierea ideografică |
3000 | 303F | Simboluri CJC și punctuație | U3000 | a se vedea Punctuația , chineză, japoneză și coreeană , Sinogramme , scris chineză , limbile chineză , scripturi japoneză , japoneză , hanja , coreeană |
3040 | 309F | Hiragana | U3040 | vezi Hiragana , Scrieri de japoneză , japoneză |
30A0 | 30FF | Katakana | U30A0 | vezi Katakana , Scrieri de japoneză , japoneză |
3100 | 312F | Bopomofo | U3100 | vezi Bopomofo , chineză, japoneză și coreeană , Sinogramme |
3130 | 318F | Hangul compatibilitate jamos | U3130 | vezi Hangûl , Sinogramme , coreeană |
3190 | 319F | Kanbun | U3190 | vezi Kanbun , Sinogramme |
31A0 | 31BF | Bopomofo extins | U31A0 | vezi Bopomofo , Sinogramme |
31C0 | 31EF | Trăsături CJC | U31C0 | a se vedea chineză, japoneză și coreeană , Sinogramme , scris chineză , limbile chineză , scripturi japoneză , japoneză , hanja , coreeană |
31F0 | 31FF | Extensie fonetică Katakana | U31F0 | vezi Katakana , Scrieri de japoneză , japoneză |
3200 | 32FF | Scrisori și luni CJC în cerc | U3200 | a se vedea figurile arabe , chineze, japoneze și coreene , Sinogramme , scris chineză , limbi chineză , scripturi japoneză , japoneză , Hanja , coreeană |
3300 | 33FF | Compatibilitate CJC | U3000 | a se vedea Unitatea de măsură , chineză, japoneză și coreeană , Sinogramme , scris chineză , limbile chineză , scripturi japoneză , japoneză , hanja , coreeană |
3400 | 4DBF | Supliment A la ideogramele unificate CJC ( partea 1 ) ( partea 2 ) |
U3400 | a se vedea chineză, japoneză și coreeană , Sinogramme , scris chineză , limbile chineză , scripturi japoneză , japoneză , hanja , coreeană |
4DC0 | 4DFF | Hexagramele clasicului mutațiilor sau Yi Jing | U4DC0 | vezi Yi Jing , Hexagram , chineză, japoneză și coreeană , sinogramă |
4E00 | 9FFF | Ideograme unificate CJC ( partea 1 ) ( partea 2 ) ( partea 3 ) ( partea 4 ) ( partea 5 ) ( partea 6 ) |
U4E00 | a se vedea chineză, japoneză și coreeană , Sinogramme , scris chineză , limbile chineză , scripturi japoneză , japoneză , Hanja , coreeană , Vietnameză |
A000 | A48F | Silabarul yi al Munților proaspeți | UA000 | vezi Silabarul yi |
A490 | A4CF | Taste Yi | UA490 | vezi Silabarul yi |
A4D0 | A4FF | Lisu | UA4D0 | vezi Lisu , Alphabet Fraser (en) |
A500 | A63F | Vai | UA500 | vezi Syllabaire vaï |
A640 | A69F | Cirilic extins B | UA640 | vezi alfabetul chirilic |
A6A0 | A6FF | Bamoun | UA6A0 | vezi scriptul Bamoun |
A700 | A71F | Schimbarea literelor de ton | UA700 | vezi Limba în tonuri , Limba chineză |
A720 | A7FF | Latină extinsă D | UA720 | vezi Alfabetul latin |
A800 | A82F | Sylotî nâgrî | UA800 | vezi Sylotî nâgrî (ro) |
A830 | A83F | Forme digitale comune indiene | UA830 | vezi India |
A840 | A87F | Phags-pa | UA840 | vezi scriptul phagpa |
A880 | A8DF | Saurachtra | UA880 | vezi Alphabet Saurashtra (ro) |
A8E0 | A8FF | Extins devanāgarī | UA8E0 | vezi Devanâgarî |
A900 | A92F | Kayah li | UA900 | vezi Alphabet Kayah Li |
A930 | A95F | Rejang | UA930 | vezi Scrierea rejang |
A960 | A97F | Jamos Hangul Extended A | UA960 | vezi Hangûl , Sinogramme , coreeană |
A980 | A9DF | Javaneză | UA980 | vezi scriptul javanez |
A9E0 | A9FF | Birmanezul extins B | UA9E0 | a se vedea birmanez , script birman |
AA00 | AA5F | Cham | UAA00 | vezi Cham |
AA60 | AA7F | Birmanezul a extins A | UAA60 | a se vedea birmanez , script birman |
AA80 | AADF | Tai viet | UAA80 | vezi Alphabet taï viêt , Tay dam , Tay don , Tay Song ( fr ) |
AAE0 | AAFF | Meitei mayek a extins | UAAE0 | vezi Meitei , script Meitei |
AB00 | AB2F | Etiopian Extins A | UAB00 | vezi Alphasyllabaire geez |
AB30 | AB6F | Latină extinsă E | UAB30 | vezi alfabetul latin , Teuthonista , Alphabet d'Ascoli , Alphabet Rousselot-Gilliéron |
AB70 | ABBF | Supliment cherokee | UAB70 | vezi Silabarul Cherokee |
ABC0 | ABFF | Meitei mayek | UABC0 | vezi Meitei , script Meitei |
AC00 | D7AF | Silabe Hangul ( Partea 1 ) ( Partea 2 ) ( Partea 3 ) ( Partea 4 ) |
UAC00 | vezi Hangûl , Sinogramme , coreeană |
D7B0 | D7FF | Jamos Hangul Extended B | U27B0 | vezi Hangûl , Sinogramme , coreeană |
D800 | DBFF | Semiconectare cu indirectitate ridicată | UD800 | a se vedea jumătatea superioară a indirecției |
DC00 | DFFF | Demi-zonă cu indirectizare redusă | UDC00 | vezi jumătate de zonă cu indirectizare redusă |
E000 | F8FF | Zona de utilizare privată ( partea 1 ) ( partea 2 ) |
UE000 | Nicio trăsătură definită oficial |
F900 | FAFF | Ideograme de compatibilitate CJC | UF900 | a se vedea chineză, japoneză și coreeană , Sinogramme , scris chineză , limbile chineză , scripturi japoneză , japoneză , hanja , coreeană |
FB00 | FB4F | Forme alfabetice de prezentare | UFB00 | vezi alfabetul latin , alfabetul ebraic , alfabetul armean |
FB50 | FDFF | Formulare de prezentare arabă A ( Partea 1 ) ( Partea 2 ) ( Partea 3 ) |
UFB50 | vezi alfabetul arab |
FE00 | FE0F | Selectoare de variante | UFE00 | vezi varianta Selectors (în) |
FE10 | FE1F | Forme verticale | UFE10 | vezi Punctuație , GB 18030 |
FE20 | FE2F | Semisemne combinatorii | UFE20 | vezi Diacritic |
FE30 | FE4F | Formulare de compatibilitate CJC | UFE30 | a se vedea chineză, japoneză și coreeană , Sinogramme , scris chineză , limbile chineză , scripturi japoneză , japoneză , hanja , coreeană |
FE50 | FE6F | Mici variații de formă | UFE50 | vezi Punctuație , GBK , GB 2312 , CNS 11643 (ro) |
FE70 | FEFF | Forme de prezentare arabă B | UFE70 | vezi alfabetul arab |
FF00 | FFEF | Forme de jumătate și lățime completă | UFF00 | a se vedea forme în jumătate și plin-lățime , chineză, japoneză și coreeană , Sinogramme , scris chineză , limbile chineză , scripturi japoneză , japoneză , Hanja , coreeană , ASCII , alfabetul latin |
FFF0 | FFFF | Personaje speciale | UFFF0 | vezi Personaje speciale |
Puncte de cod | Numele oficial al blocului | PDF oficial | Află mai multe | |
---|---|---|---|---|
start | Sfârșit | |||
10.000 | 1007F | Silabara liniară B | U10000 | vezi Liniar B |
10080 | 100FF | Ideograme liniare B. | U10080 | vezi Liniar B |
10100 | 1013F | Numere din Marea Egee | U10100 | vezi Numere iEgean (ro) |
10140 | 1018F | Numere grecești antice | U10140 | vezi Numere grecești antice |
10190 | 101CF | Simboluri antice | U10190 | vezi Unități romane , valută romană |
101D0 | 101FF | Phaistos Disc | U101D0 | vezi Phaistos Disc |
10200 | 1027F | rezervă | - | - |
10280 | 1029F | Lycian | U10280 | vezi Lycien |
102A0 | 102DF | Carien | U102A0 | vezi Alfabetul Carian |
102E0 | 102FF | Numere epacte copte | U102E0 | vezi copte |
10300 | 1032F | Alfabet cursiv | U10300 | vezi Alfabetul Italic Vechi |
10330 | 1034F | gotic | U10330 | vezi gotic |
10350 | 1037F | Permian vechi | U10350 | vezi alfabetul vechi permian |
10380 | 1039F | Ugaritic | U10380 | vezi alfabetul ugaritic |
103A0 | 103FF | Persan vechi | U103A0 | vezi persanul vechi |
10400 | 1044F | Deseret | U10400 | vezi Alfabet deseret |
10450 | 1047F | Shavien | U10450 | vezi alfabetul Shavian |
10480 | 104AF | Osmanya | U10480 | vezi Alfabetul Osmanya |
104B0 | 104FF | Osage | U104B0 | vezi Osage |
10500 | 1052F | Elbasan | U10500 | vezi scriptul Elbasan |
10530 | 1056F | Aghbanez | U10530 | vezi alfabetul Aghbanian |
10570 | 105FF | rezervă | - | - |
10600 | 1077F | Liniar A | U10600 | vezi Liniar A |
10780 | 107FF | rezervă | - | - |
10800 | 1083F | Silabarul cipriot | U10800 | vezi silabarul cipriot |
10840 | 1085F | Aramaică imperială | U10840 | vezi Alfabetul aramaic |
10860 | 1087F | Alfabetul palmirian | U10860 | vezi Alfabetul Palmirenian |
10880 | 108AF | Nabataean | U10880 | vezi alfabetul nabateean |
108B0 | 108DF | rezervă | - | - |
108E0 | 108FF | Hatrenian | U108E0 | vezi Alfabetul Hatrénien ( fr ) |
10900 | 1091F | fenician | U10900 | vezi alfabetul fenician |
10920 | 1093F | Lydian | U10920 | vezi Alfabetul lidian |
10940 | 1097F | rezervă | - | - |
10980 | 1099F | Hieroglifele meroite | U10980 | vezi scriptul meroitic |
109A0 | 109FF | Cursiv Meroitic | U109A0 | vezi scriptul meroitic |
10A00 | 10A5F | Kharochthî | U10A00 | vezi Alphabet kharoshthi |
10A60 | 10A7F | Arabă de sud | U10A60 | vezi Alfabetul Arabiei de Sud |
10A80 | 10A9F | Arabă de nord | U10A80 | vezi vechiul nord arab (ro) |
10AA0 | 10ABF | rezervă | - | - |
10AC0 | 10AFF | Manichee | U10AC0 | a se vedea Alfabetul manicheic (en) |
10B00 | 10B3F | Avestic | U10B00 | vezi Alfabetul Avestic (en) |
10B40 | 10B5F | Inscripții parțiale | U10B40 | vezi inscripțiile parțiene (en) |
10B60 | 10B7F | Pehlevi de inscripții | U10B60 | vezi scriptul pehlevi |
10B80 | 10BAF | Pehlevi al Psaltirilor | U10B80 | vezi scriptura pehlevi , Psaltirea |
10BB0 | 10BFF | rezervă | - | - |
10C00 | 10C4F | Orkhon | U10C00 | vezi Alfabetul Orkhon |
10C50 | 10C7F | rezervă | - | - |
10C80 | 10CFF | Vechi maghiar | U10C80 | vezi Runele maghiare |
10D00 | 10E5F | rezervă | - | - |
10E60 | 10E7F | Simboluri digitale Rumi | U10E60 | vezi Figurile lui Fez , Fez |
10E80 | 10FDF | rezervă | - | - |
10FE0 | 10FFF | Elimic | U10FE0 | vezi Élymaïque (en) |
11000 | 1107F | Brahman | U11000 | vezi Brahmi |
11080 | 110CF | Khaithi | U11080 | vezi Khaithi |
110D0 | 110FF | Sora sompeng | U110D0 | vezi Alphabet sora sompeng (ro) |
11100 | 1114F | Chakma | U11100 | vezi Ojhapath |
11150 | 1117F | Mahajanî | U11150 | vezi Mahâjanî (în) |
11180 | 111DF | Charada | U11180 | vezi Sharfa alfa-silabară |
111E0 | 111FF | Numere arhaice singaleze | U111E0 | vezi Singhalese |
11200 | 1124F | Khojki | U11200 | vezi Khojki (ro) |
11250 | 1127F | rezervă | - | - |
11280 | 112AF | Multani | U11280 | vezi Alfabetul Multani (ro) |
112B0 | 112FF | Khudabadi | U112B0 | vezi Scrierea Khudabadi (ro) |
11300 | 1137F | Grantha | U11300 | vezi Grantha |
11380 | 113FF | rezervă | - | - |
11400 | 1147F | Newa | U11400 | vezi Alphabet Newa (ro) |
11480 | 114DF | Tirhuta | U11480 | vezi Tirhuta |
114E0 | 1157F | rezervă | - | - |
11580 | 115FF | Siddham | U11580 | vezi Alphasyllabary siddham |
11600 | 1165F | Modi | U11600 | vezi Modi Alphasyllabary |
11660 | 1167F | Supliment mongol | U11660 | vezi mongolă |
11680 | 116CF | Takri | U11680 | vezi Alphabet Takri (ro) |
116D0 | 116FF | rezervă | - | - |
11700 | 1173F | Ahom | U11700 | vezi Alphasyllabaire âhom |
11740 | 1189F | rezervă | - | - |
118A0 | 118FF | Warang citi | U118A0 | vezi Warang Citi (en) |
11900 | 11999 | rezervă | - | - |
119A0 | 119FF | nandinâgarî | U119A0 | vezi Nandinagari (ro) |
11A00 | 11A4F | Cadratic Zanabazar | U11A00 | vezi Zanabazar , mongol |
11A50 | 11AAF | Soyombo | U11A50 | vezi scriptul soyombo |
11AB0 | 11ABF | rezervă | - | - |
11AC0 | 11AFF | Paou chin haou | U11AC0 | vezi Scrierea Paou chin haou (ro) |
11B00 | 11BFF | rezervă | - | - |
11C00 | 11C6F | Bhaiksuki | U11C00 | vezi Alphabet Bhaiksuki (ro) |
11C70 | 11CBF | Marchen | U11C70 | vezi Zhang-zhung |
11CC0 | 11CFF | rezervă | - | - |
11D00 | 11D5F | Masaram gondi | U11D00 | vezi Masaram Gondi (ro) , Gondi |
11D60 | 11FBF | rezervă | - | - |
11FC0 | 11FFF | Supliment tamil | U11FC0 | vezi Tamil |
12000 | 123FF | Cuneiform | U12000 | vezi Cuneiform |
12400 | 1247F | Punctuație și numere cuneiforme | U12400 | vezi Cuneiform |
12480 | 1254F | Cuneiform al dinastiilor arhaice | U12480 | vezi Cuneiform |
12550 | 12FFF | rezervă | - | - |
13000 | 1342F | Hieroglifele egiptene | U13000 | vezi scrierea hieroglifică egipteană |
13430 | 1343F | Controale de formatare hieroglifică egiptene | U13430 | vezi scrierea hieroglifică egipteană |
13440 | 143FF |
Rezervat (partea 1) (partea 2) |
- | - |
14400 | 1467F | Hieroglifele anatoliene | U14400 | vezi hieroglifele anatoliene |
14680 | 167FF |
Rezervat (partea 1) (partea 2) (partea 3) |
- | - |
16800 | 16A3F | Supliment Bamoun | U16800 | vezi scriptul Bamoun |
16A40 | 16A6F | Mro | U16A40 | vezi Language Mro (en) |
16A70 | 16ACF | rezervă | - | - |
16AD0 | 16AFF | Bassa | U16AD0 | vezi Alphabet bassa |
16B00 | 16B8F | Pahawh hmong | U16B00 | vezi Pahawh hmong |
16B90 | 16EFF | rezervă | - | - |
16F00 | 16F9F | Miao | U16F00 | vezi Scrierea Miao (ro) |
16FA0 | 16FDF | rezervă | - | - |
16FE0 | 16FFF | Simboluri ideografice și punctuație | U16FE0 | vezi Ideogramă , scrierea Tangut , Nüshu |
17000 | 187FF | Tangoute (partea 1) (partea 2) |
U17000 | vezi scrierea Tangoute |
18800 | 18AFF | Componente Tangut | U18800 | vezi scrierea Tangoute |
18B00 | 1AFFF |
Rezervat (partea 1) (partea 2) (partea 3) |
- | - |
1B000 | 1B0FF | Supliment Kana | U1B00 | vezi japoneză , Scrieri japoneze , Kana |
1B100 | 1B12F | Extins Kana A | U1B100 | vezi Japoneză , Scrieri japoneze , Kana , Hentaigana |
1B130 | 1B16F | Extensie kana mică | U1B130 | vezi Japoneză , Scrieri japoneze , Kana , Hentaigana |
1B170 | 1B2FF | Nüshu | U1B170 | vezi Nüshu |
1B300 | 1BBFF | rezervă | - | - |
1BC00 | 1BC9F | Stenografie duplicată | U1BC00 | vezi Stenografia , Émile Duployé |
1BCA0 | 1CFFF |
Rezervat (partea 1) (partea 2) |
- | - |
1D000 | 1D0FF | Simboluri muzicale bizantine | U1D000 | vezi Muzica bizantină |
1D100 | 1D1FF | Simboluri muzicale occidentale | U1D100 | vezi muzica occidentală |
1D200 | 1D24F | Notatie muzicala greaca antica | U1D200 | vezi Muzica Grecească Antică |
1D250 | 1D2FF | rezervă | - | - |
1D300 | 1D35F | Simbolurile clasice ale misterului suprem | U1D300 | vezi Tai Xuan Jing (ro) |
1D360 | 1D37F | Cifre chinezești | U1D360 | vezi Numărarea barelor |
1D380 | 1D3FF | rezervă | - | - |
1D400 | 1D7FF | Simboluri matematice alfanumerice | U1D400 | vezi Simbol matematic , alfabet latin , cifre arabe |
1D800 | 1DAAF | Scrierea semnelor lui Sutton | U1D800 | vezi Scrierea semnelor |
1DAB0 | 1DFFF | rezervă | - | - |
1E000 | 1E02F | Supliment glagolitic | U1E000 | vezi Alfabetul glagolitic |
1E030 | 1E0FF | rezervă | - | - |
1E100 | 1E14F | Nyiakeng puachue hmong | U1E800 | vezi Nyiakeng puachue hmong (ro) |
1E150 | 1E2DF | rezervă | - | - |
1E2C0 | 1E2FF | Wancho | U1E2C0 | vezi Wancho |
1E300 | 1E7FF | rezervă | - | - |
1E800 | 1E8DF | Cerșind kikakui | U1E800 | vezi Kikakui |
1E8E0 | 1E8FF | rezervă | - | - |
1E900 | 1E95F | Adlam | U1E900 | vezi Alphabet adlam |
1E960 | 1ECFF | rezervă | - | - |
1ED00 | 1ED4F | Cifrele Syaq | U1ED00 | |
1ED50 | 1ECFF | rezervă | - | - |
1EE00 | 1EEFF | Simboluri alfabetice matematice arabe | U1EE00 | vezi Matematica arabă |
1EF00 | 1EFFF | rezervă | - | - |
1F000 | 1F02F | Piese de Mahjong | U1F000 | vezi Mah-jong |
1F030 | 1F09F | Domino | U1F030 | vezi Dominos |
1F0A0 | 1F0FF | Carti de joc | U1F0A0 | vezi cărți de joc |
1F100 | 1F1FF | Supliment alfanumeric în cerc | U1F100 | vezi ARIB STD-B24 (ro) |
1F200 | 1F2FF | Supliment ideografic încercuit | U1F200 | vezi ARIB STD-B24 (ro) |
1F300 | 1F5FF | Diverse simboluri și pictograme | U1F300 | vezi Pictogramă , Emoji |
1F600 | 1F64F | Emoticoni | U1F600 | vezi Emoticon , Emoji |
1F650 | 1F67F | Casetă ornamentală | U1F650 | vezi Wingdings |
1F680 | 1F6FF | Transport și simboluri cartografice | U1F680 | vezi Transport , Cartografie , Emoji |
1F700 | 1F77F | Simboluri alchimice | U1F700 | vezi Alchemy |
1F780 | 1F7FF | Forme geometrice extinse | U1F780 | vezi Forma geometrică |
1F800 | 1F8FF | Săgețile supliment C | U1F800 | vezi Săgeata |
1F900 | 1F9FF | Simboluri și pictograme suplimentare | U1F900 | vezi Pictogramă , Emoticon , Emoji |
1FA00 | 1FA6F | rezervă | - | - |
1FA70 | 1FAFF | Simboluri și pictograme extinse-A | U1FA70 | vezi Pictogramă , Emoji |
1FB00 | 1FFFF | rezervă | - | - |
Puncte de cod | Numele oficial al blocului | Află mai multe | |
---|---|---|---|
start | Sfârșit | ||
20.000 | 2A6DF | CJC Unified Ideograms Supplement B ( Part 1 ) ( Part 2 ) ( Part 3 ) ( Part 4 ) ( Part 5 ) ( Part 6 ) ( Part 7 ) ( Part 8 ) ( Part 9 ) ( Part 10 ) ( Part 11 ) |
vezi chineză, japoneză și coreeană |
2A6E0 | 2A6FF | rezervă | - |
2A700 | 2B73F | Supliment C la ideogramele unificate CJC ( partea 1 ) ( partea 2 ) |
vezi chineză, japoneză și coreeană |
2B740 | 2B81F | Supliment D la ideogramele CJC unificate | vezi chineză, japoneză și coreeană |
2B820 | 2CEAF | Supliment E la ideogramele CJC unificate | vezi chineză, japoneză și coreeană |
2CEB0 | 2EBEF | Supliment F la ideogramele CJC unificate | vezi chineză, japoneză și coreeană |
2EBF0 | 2F7FF | rezervă | - |
2F800 | 2FA1F | Suplimentul Ideogramelor de Compatibilitate CJC | vezi chineză, japoneză și coreeană |
2FA20 | 2FFFF | rezervă | - |
Puncte de cod | Numele oficial al blocului | Află mai multe | |
---|---|---|---|
start | Sfârșit | ||
30.000 | 3FFFF |
Rezervat ( Partea 1 ) ( Partea 2 ) ( Partea 3 ) ( Partea 4 ) ( Partea 5 ) ( Partea 6 ) ( Partea 7 ) ( Partea 8 ) ( Partea 9 ) ( Partea 10 ) ( Partea 11 ) ( Partea 12 ) ( Partea 13 ) ( Partea 14 ) ( Partea 15 ) ( Partea 16 ) ( Partea 17 ) |
Planul 3 |
40.000 | 4FFFF |
Rezervat ( Partea 1 ) ( Partea 2 ) ( Partea 3 ) ( Partea 4 ) ( Partea 5 ) ( Partea 6 ) ( Partea 7 ) ( Partea 8 ) ( Partea 9 ) ( Partea 10 ) ( Partea 11 ) ( Partea 12 ) ( Partea 13 ) ( Partea 14 ) ( Partea 15 ) ( Partea 16 ) ( Partea 17 ) |
Planul 4 |
50.000 | 5FFFF |
Rezervat ( Partea 1 ) ( Partea 2 ) ( Partea 3 ) ( Partea 4 ) ( Partea 5 ) ( Partea 6 ) ( Partea 7 ) ( Partea 8 ) ( Partea 9 ) ( Partea 10 ) ( Partea 11 ) ( Partea 12 ) ( Partea 13 ) ( Partea 14 ) ( Partea 15 ) ( Partea 16 ) ( Partea 17 ) |
Planul 5 |
60.000 | 6FFFF |
Rezervat ( Partea 1 ) ( Partea 2 ) ( Partea 3 ) ( Partea 4 ) ( Partea 5 ) ( Partea 6 ) ( Partea 7 ) ( Partea 8 ) ( Partea 9 ) ( Partea 10 ) ( Partea 11 ) ( Partea 12 ) ( Partea 13 ) ( Partea 14 ) ( Partea 15 ) ( Partea 16 ) ( Partea 17 ) |
Planul 6 |
70.000 | 7FFFF |
Rezervat ( Partea 1 ) ( Partea 2 ) ( Partea 3 ) ( Partea 4 ) ( Partea 5 ) ( Partea 6 ) ( Partea 7 ) ( Partea 8 ) ( Partea 9 ) ( Partea 10 ) ( Partea 11 ) ( Partea 12 ) ( Partea 13 ) ( Partea 14 ) ( Partea 15 ) ( Partea 16 ) ( Partea 17 ) |
Planul 7 |
80.000 | 8FFFF |
Rezervat ( Partea 1 ) ( Partea 2 ) ( Partea 3 ) ( Partea 4 ) ( Partea 5 ) ( Partea 6 ) ( Partea 7 ) ( Partea 8 ) ( Partea 9 ) ( Partea 10 ) ( Partea 11 ) ( Partea 12 ) ( Partea 13 ) ( Partea 14 ) ( Partea 15 ) ( Partea 16 ) ( Partea 17 ) |
Planul 8 |
90.000 | 9FFFF |
Rezervat ( Partea 1 ) ( Partea 2 ) ( Partea 3 ) ( Partea 4 ) ( Partea 5 ) ( Partea 6 ) ( Partea 7 ) ( Partea 8 ) ( Partea 9 ) ( Partea 10 ) ( Partea 11 ) ( Partea 12 ) ( Partea 13 ) ( Partea 14 ) ( Partea 15 ) ( Partea 16 ) ( Partea 17 ) |
Planul 9 |
A0000 | AFFFF |
Rezervat ( Partea 1 ) ( Partea 2 ) ( Partea 3 ) ( Partea 4 ) ( Partea 5 ) ( Partea 6 ) ( Partea 7 ) ( Partea 8 ) ( Partea 9 ) ( Partea 10 ) ( Partea 11 ) ( Partea 12 ) ( Partea 13 ) ( Partea 14 ) ( Partea 15 ) ( Partea 16 ) ( Partea 17 ) |
Planul 10 |
B0000 | BFFFF |
Rezervat ( Partea 1 ) ( Partea 2 ) ( Partea 3 ) ( Partea 4 ) ( Partea 5 ) ( Partea 6 ) ( Partea 7 ) ( Partea 8 ) ( Partea 9 ) ( Partea 10 ) ( Partea 11 ) ( Partea 12 ) ( Partea 13 ) ( Partea 14 ) ( Partea 15 ) ( Partea 16 ) ( Partea 17 ) |
Planul 11 |
C0000 | CFFFF |
Rezervat ( Partea 1 ) ( Partea 2 ) ( Partea 3 ) ( Partea 4 ) ( Partea 5 ) ( Partea 6 ) ( Partea 7 ) ( Partea 8 ) ( Partea 9 ) ( Partea 10 ) ( Partea 11 ) ( Partea 12 ) ( Partea 13 ) ( Partea 14 ) ( Partea 15 ) ( Partea 16 ) ( Partea 17 ) |
Planul 12 |
D0000 | DFFFF |
Rezervat ( Partea 1 ) ( Partea 2 ) ( Partea 3 ) ( Partea 4 ) ( Partea 5 ) ( Partea 6 ) ( Partea 7 ) ( Partea 8 ) ( Partea 9 ) ( Partea 10 ) ( Partea 11 ) ( Partea 12 ) ( Partea 13 ) ( Partea 14 ) ( Partea 15 ) ( Partea 16 ) ( Partea 17 ) |
Planul 13 |
Puncte de cod | Numele oficial al blocului | Comentarii | |
---|---|---|---|
start | Sfârșit | ||
E0000 | E007F | Etichete | |
E0080 | E00FF | rezervă | - |
E0100 | E01EF | Supliment de selectori de variante | |
E01F0 | EFFFF |
Rezervat ( Partea 1 ) ( Partea 2 ) ( Partea 3 ) ( Partea 4 ) ( Partea 5 ) ( Partea 6 ) ( Partea 7 ) ( Partea 8 ) ( Partea 9 ) ( Partea 10 ) ( Partea 11 ) ( Partea 12 ) ( Partea 13 ) ( Partea 14 ) ( Partea 15 ) ( Partea 16 ) ( Partea 17 ) |
- |
Puncte de cod | Numele oficial al blocului | PDF oficial | Comentarii | |
---|---|---|---|---|
start | Sfârșit | |||
F0000 | FFFFF |
Zona A suplimentară pentru uz privat ( Partea 1 ) ( Partea 2 ) ( Partea 3 ) ( Partea 4 ) ( Partea 5 ) ( Partea 6 ) ( Partea 7 ) ( Partea 8 ) ( Partea 9 ) ( Partea 10 ) ( Partea 11 ) ( Partea 12 ) ( Partea 13 ) ( Partea 14 ) ( Partea 15 ) ( Partea 16 ) ( Partea 17 ) |
UF0000 | Nicio trăsătură definită oficial |
100.000 | 10FFFF |
Zona B suplimentară pentru uz privat ( Partea 1 ) ( Partea 2 ) ( Partea 3 ) ( Partea 4 ) ( Partea 5 ) ( Partea 6 ) ( Partea 7 ) ( Partea 8 ) ( Partea 9 ) ( Partea 10 ) ( Partea 11 ) ( Partea 12 ) ( Partea 13 ) ( Partea 14 ) ( Partea 15 ) ( Partea 16 ) ( Partea 17 ) |
U100000 | Nicio trăsătură definită oficial |
Zonele de uz privat nu conțin aceiași ochi de la un font la altul și, prin urmare, ar trebui evitate pentru codificarea textelor destinate schimburilor între sisteme eterogene. Cu toate acestea, aceste puncte de cod de utilizare privată sunt valabile și pot fi utilizate în orice procesare automată conformă cu standardele Unicode și ISO / IEC 10646 , inclusiv între diferite sisteme, dacă există un acord privat privat cu privire la utilizarea lor.
În absența unui acord între cele două părți, sistemele care utilizează aceste caractere pot respinge textele care le conțin, deoarece prelucrarea la care sunt supuse nu ar putea funcționa corect sau ar putea provoca probleme de securitate; alte sisteme care nu atribuie nicio funcție specială acestor caractere trebuie, pe de altă parte, să le accepte ca valabile și să le păstreze ca parte integrantă a textelor, ca și cum ar fi simboluri grafice, chiar dacă nu știu cum să afișeze le corect.
Non-caracterele sunt puncte de cod valide, dar nu sunt (și niciodată nu vor fi) atribuite caracterelor standardizate. Utilizarea lor în codificarea textelor transmise între sisteme (chiar dacă identice) este interzisă, deoarece este imposibil să le facem compatibile cu formele standardizate de transformare universală (inclusiv UTF-8, UTF-16, UTF-32) codificare corespunzătoare și alte codificări standardizate compatibile cu Unicode și ISO / IEC 10646 ( BOCU -1, SCSU , diferite versiuni ale standardului chinez GB 18030 , etc. ). Cu toate acestea, unele sisteme le generează și le utilizează la nivel local, dar pentru procesare strictă internă menită să faciliteze implementarea algoritmilor de procesare a textului folosind celelalte caractere standardizate.
Printre aceste din urmă non-caractere se numără puncte de cod valide rezervate pentru jumătăți de zone (private sau nu). Aceste puncte de cod nu pot fi utilizate individual pentru a codifica un caracter. Acestea sunt utilizate numai pentru forma de transformare universală UTF-16 (și schemele de codare corespunzătoare) pentru a reprezenta pe două puncte de cod (la câte 16 biți fiecare) puncte de cod valide într-unul din cele 16 planuri complementare (anumite combinații de puncte de cod corespund caracterelor valide ale aceste planuri, standard sau private, alte combinații pot să nu reprezinte niciun caracter valid, deoarece acestea ar corespunde non-caractere ale acestor planuri complementare și, prin urmare, sunt interzise în textele conforme cu standardul).
Alte zone libere (care nu sunt atribuite unui bloc denumit standardizat sau punctelor de cod lăsate libere și rezervate în blocurile denumite existente) sunt rezervate pentru utilizare viitoare în versiunile viitoare ale Unicode și ISO / IEC 10646 , dar sunt valabile. Orice sistem care se ocupă de texte care conțin aceste puncte de cod rezervate trebuie să le accepte fără a le filtra. Unicode definește proprietățile implicite pentru caracterele ipotetice corespunzătoare, pentru a păstra compatibilitatea sistemelor (conforme cu standardul Unicode) cu textele viitoare care le conțin. Nicio aplicație conformă nu ar trebui să le atribuie un caracter special sau semantică (spațiile private sunt destinate acestei utilizări).