Unicode

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:

Alfabetic

[L] ogografic și [S] ilabic


Asia de Est [L]

Abjad (limbi semitice)

Abugida

Poartă

Tabelele Unicode (planul 0) Date esentiale
0000 - 0FFF 8000 - 8FFF
1000 - 1FFF 9000 - 9FFF
2000 - 2FFF A000 - AFFF
3000 - 3FFF B000 - BFFF
4000 - 4FFF C000 - CFFF
5000 - 5FFF D000 - DFFF
6000 - 6FFF E000 - EFFF
7000 - 7FFF F000 - FFFF
Alte planuri Unicode
0000 - FFFF planul 0 (PMB / BMP )
10.000 - 1FFFF planul 1 (PMC / SMP )
20.000 - 2FFFF planul 2 (PSC / SIP )
30.000 - 3FFFF planul 3 (PST / TIP )
40.000 - DFFFF fotografii 4-13 (rezervat)
E0000 - EFFFF planul 14 (PCS / SSP )
F0000 - FFFFF planul 15 (privat A)
100.000 - 10FFFF planul 16 (privat B)

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 ).

Standardizare

Interoperabilitate

În forma sa UTF-8, Unicode oferă o anumită interoperabilitate cu codul ASCII .

Conformitate

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.

Limitări

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ă .

Standarde și versiuni

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

Straturi Unicode

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  :

  • 4 cifre pentru prim-plan, numit planul de bază multilingv (deci între U + 0000 și U + FFFF);
  • 5 cifre pentru următoarele 15 planuri (între U + 10.000 și U + FFFFF);
  • 6 cifre pentru ultimul plan (între U + 100.000 și U + 10FFFF).

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 .

Limita de octeți

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:

  • Grupul internațional de lucru ISO standardizează atribuirea punctelor de cod pentru caractere, numele lor oficial și rezervă blocurile de puncte de cod utilizate de fiecare script sau grup de scripturi. Documentează, de asemenea, o posibilă reprezentare grafică (orientativă) pentru fiecare caracter (această reprezentare grafică fiind, dacă este posibil, univocă datorită plasării caracterelor standardizate în blocurile de cod corespunzătoare pentru un număr limitat de scripturi).
  • Grupul de lucru Unicode Consortium standardizează mai precis (în standardul Unicode) semantica lor pentru procesare automată grație tabelelor cu proprietăți de caractere și dezvoltarea algoritmilor standard care utilizează aceste proprietăți.
  • Cele două organisme de standardizare colaborează pentru a sincroniza continuu repertoriul lor standardizat în versiuni oficiale reciproc referențiate și lucrează împreună la modificări (versiunile care nu devin oficiale până când ambele organisme nu au fiecare completare aprobată și complet definită. Caractere).
  • În practică, pentru majoritatea dezvoltatorilor de aplicații, standardul ISO / IEC 10646 apare ca un subset al standardului Unicode mai complet, dar are aceleași puncte de cod pentru exact același set de caractere ca standardul. Unicode (de aceea standardul Unicode este mai cunoscut deoarece este mai potrivit pentru procesarea computerizată, precum și disponibil gratuit pe internet).

Format de transformare universală (UTF)

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-8

UTF-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).

Derivate
  • Unele programe (de exemplu, baza de date Oracle ) care își reprezintă intern datele Unicode în format UTF-16 au (sau au experimentat) un defect de conversie în UTF-8: un caracter între U + 10000 și U + 10FFFF, stocat în două 16- cuvinte bit, este convertit în UTF-8 ca o succesiune de două caractere Unicode. Acest lucru a dus la crearea „accidentală” a CESU-8 și are avantajul de a facilita utilizarea Unicode pe platformele de 16 biți.
  • Caracterul nul Unicode U + 0000 este codificat în UTF-8 ca un singur octet nul 0x00 . Conform standardului Unicode, acest caracter nu are o semnificație specială; totuși (din motive conceptuale istorice), bibliotecile de procesare a șirurilor de limbaj C consideră că acest caracter de control este un sfârșit de șir, ceea ce complică implementarea unor cazuri de aplicație . În cadrul platformei Java , versiunea „  (ro) UTF-8 modificată  ” s-a născut profitând de portabilitatea „16 biți” a CESU-8 și adăugând posibilitatea codificării U + 0000 sub secvența 0xC0 0x80 (în mod normal interzis în UTF-8): schimbând în acest fel cu bibliotecile native C ale platformei acceptate, platforma poate gestiona cu ușurință toate textele Unicode valide, precum și fișierele de clasă compilate (format alternativ portabil, independent de endianitate și cuvânt mărimea).
UTF-16

UTF-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 .

Codificare UTF-16
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:

  • scade 0x10000 din punctul de cod, lăsând un număr de 20 de biți în intervalul 0x00 până la 0xFFFFF;
  • cei 10 biți cei mai semnificativi (un număr între 0x00 și 0x3FF) sunt adăugați la 0xD800 și dau prima unitate de cod în jumătatea înaltă ( 0xD800 la 0xDBFF );
  • cei 10 biți cel mai puțin semnificativi (un număr între 0x00 și 0x3FF) sunt adăugați la 0xDC00 și dau a doua unitate de cod în jumătatea joasă ( 0xDC00 la 0xDFFF );

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-32

UTF-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.

Standardul chinezesc GB 18030

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.

Fonturi Unicode

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.

Detalii tehnice

Biblioteci software

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:

Tipuri compatibile cu Unicode în limbaje de programare
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
Note
  1. În UTF-8
  2. Rețineți însă că tipul de wchar_tlimbă C nu permite întotdeauna codificarea tuturor caracterelor Unicode, deoarece standardul acestei limbi nu oferă un număr minim suficient pentru acest tip standard. Cu toate acestea, mulți compilatori ai limbajului definesc wchar_tla 32 de biți (sau chiar 64 de biți pe medii care gestionează numere întregi standard pe 64 de biți), ceea ce este suficient pentru a stoca orice punct de cod Unicode standardizat. Dar alte compilatoare reprezintă wchar_tpe 16 biți (în special sub Windows în mediul de 16 sau 32 de biți), chiar și pe 8 biți (în special în mediile încorporate care nu au un sistem de operare general), deoarece wchar_tpot utiliza aceeași reprezentare ca tipul charcare are un minim de 8 biți.
  3. În mod similar cu C și C ++, limbajul Java are un tip de unitate care permite codificarea a 16 biți, dar nu permite codificarea unui singur punct de cod de orice valoare (tipul nativ chareste doar un număr întreg pozitiv de 16 biți) . Pentru a manipula caracterele standardizate în prim-plan, trebuie să utilizați o pereche de puncte de cod, fiecare conținând o valoare egală cu cele două puncte de cod definite de formularul UTF-16. De asemenea, tipurile de obiecte Stringsau char[2]sunt cele mai potrivite pentru reprezentarea unui caracter Unicode. De la Java 1.4.1 , biblioteca standard oferă suport Unicode complet datorită tipului nativ int(care este un număr întreg definit pe 32 de biți) și metodelor statice ale clasei standard Character(totuși un obiect instanțiat de acest tip Characternu permite, la fel ca tipul nativ char, pentru a stoca orice punct de cod).
  4. JavaScript are diferite implementări nestandardizate, unele mai vechi care acceptă nu mai mult de 16 biți pe caracter și uneori doar 8 biți. Cu toate acestea, standardul ECMAScript al acestui limbaj definește o clasă de utilitate Characterpe 32 de biți (de fapt bazată pe clasă Number) care trebuie să suporte toate punctele de cod ale celor 17 planuri standardizate, în timp ce șirurile de caractere folosesc caractere codate obligatoriu pe 16 biți (dar fără restricție consolidând împerecherea unităților de cod UTF-16, șirurile de tip ECMAScript Stringnefiind restrânse la singura codificare UTF-16 ci fiind vectori de constante întregi codificate pe 16 biți fără restricții, pentru a asigura (interoperabilitatea cu Java și alte limbi care, de asemenea, nu aplică restricțiile de conformitate UTF-16 în tipurile lor de date native). Aceste două limbaje nu acceptă tastarea explicită a variabilelor, tipul fiind definit dinamic de valorile atribuite acestora (de asemenea, sunt posibile mai multe reprezentări interne, diferențele lor fiind în mod normal transparente pentru programator).

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ționare

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
Plan multilingv complementar (PMC, 10.000 la 1FFFF)
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ă - -
Plan ideografic complementar (PIC, 20000 la 2FFFF)
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ă -
Planuri complementare rezervate (30.000 către DFFFF)
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
Plan complementar specializat (PCS, E0000 la EFFFF)
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 )
-
Planuri suplimentare pentru uz privat (F0000 până la 10FFFF)
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).

Note și referințe

  1. (în) „  Anunțarea standardului Unicode®, versiunea 12.0  ” pe blogul Unicode ,5 martie 2019
  2. (ro) [1] .
  3. (în) „  Statistici de utilizare a codificărilor de caractere pentru site-uri web, ianuarie 2017  ” pe w3techs.com (accesat la 6 ianuarie 2017 ) .
  4. „  Unicode 7.0 adaugă 250 de emoji, inclusiv degetul mijlociu  ” , pe nextinpact.com ,16 iunie 2014(accesat la 20 ianuarie 2016 ) .
  5. (în) „  Unicode 8 : Ce și când  ” pe emojipedia.org ,17 iunie 2015(accesat la 20 ianuarie 2016 ) .
  6. (în) „  Unicode® 9.0.0  ” pe http://unicode.org/ (accesat la 23 aprilie 2018 ) .
  7. (în) „  Unicode® 10.0.0  ” pe http://unicode.org/ (accesat la 23 aprilie 2018 ) .
  8. (în) „  Unicode® 11.0.0  ” pe http://unicode.org/ (accesat la 23 aprilie 2018 ) .
  9. (în) „  Unicode® 12.0.0  ” pe http://unicode.org/ (accesat la 6 martie 2019 ) .
  10. Inc Unicode , „  Anunțarea standardului Unicode®, versiunea 13.0  ” (accesat la 26 mai 2020 )
  11. (în) Raport tehnic Unicode # 17: Model de codificare a caracterelor Unicode .
  12. (în) „  UTF-8, formate de transformare ISO 10646  ”, „ Cerere de comentarii nr .  3629,noiembrie 2003.
  13. (în) Standardul Unicode, versiunea 5.0 , capitolul 16  : Zone speciale și caractere de format [PDF] - Unicode, Inc., p.  354 .
  14. Secvențele UTF-8 trebuie să fie cât mai scurte posibil. Această restricție trebuie verificată pentru a evita anumite vulnerabilități de securitate, cum ar fi „/../” - vezi detalii în secțiunea „Dezavantaje” a articolului UTF-8 .
  15. (în) "  cod în Apache Xalan 2.7.0, care poate eșua perechi surogate  " , Fundația Apache .
  16. http://unicode.org/charts/PDF/U2B820.pdf
  17. http://unicode.org/charts/PDF/U2CEB0.pdf
  18. http://unicode.org/charts/PDF/U2EBF0.pdf
  19. http://unicode.org/charts/PDF/U30000.pdf
  20. http://unicode.org/charts/PDF/U40000.pdf
  21. http://unicode.org/charts/PDF/U50000.pdf
  22. http://unicode.org/charts/PDF/U60000.pdf
  23. http://unicode.org/charts/PDF/U70000.pdf
  24. http://unicode.org/charts/PDF/U80000.pdf
  25. http://unicode.org/charts/PDF/U90000.pdf
  26. http://unicode.org/charts/PDF/UA0000.pdf
  27. http://unicode.org/charts/PDF/UB0000.pdf
  28. http://unicode.org/charts/PDF/UC0000.pdf
  29. http://unicode.org/charts/PDF/UD0000.pdf
  30. http://unicode.org/charts/PDF/UE0080.pdf
  31. http://unicode.org/charts/PDF/UE01F0.pdf

Vezi și tu

Articole similare

linkuri externe

referințe normative Referințe informative
  • (fr) Traducere oficială în franceză a standardelor ISO / IEC 10646 și Unicode .
  • (fr) Unicode 5.0 în practică , de Patrick Andries, publicat de Dunod (Aprilie 2008) - carte de referinta.
  • (ro) RFC 1641  : Utilizarea Unicode cu MIME - experimental (Iulie 1994)
  • (ro) RFC 2152  : UTF-7, Un format de transformare securizat prin poștă a Unicode - experimental (Mai 1997); înlocuiește RFC 1642 (învechit)
  • (ro) RFC 2482  : Etichetarea limbii în text simplu Unicode - informativ (Ianuarie 1999)
  • (ro) RFC 3718  : Un rezumat al procedurilor, politicilor, stabilității și accesului publicului consorțiului Unicode - informativ (Februarie 2004)
  • (ro) RFC 5891  : Numele de domenii internaționalizate în aplicații (IDNA): Protocol - standard propus; înlocuiește RFC 3490 și RFC 3491 (învechit), actualizează RFC 3492 Punycode
  • (în) Unicode - Filmul Toate cele 109.242 de caractere ale Unicode 6.0 dintr-un singur film
Tabelele și datele
  • (ro) Galeria fonturilor Unicode  : inventar de 1.239 de fonturi (august 2007) și personajele pe care le înțeleg.
  • (ro) Suport Unicode și multilingv în HTML, Fonturi, Browsere Web și alte aplicații , site-ul lui Alan Wood listând diferitele blocuri Unicode cu pagini de testare, sfaturi și linkuri către resurse, fonturi și utilități pentru introducerea și afișarea blocurilor în cauză cu web browsere sau alte programe software.
  • (en) (de) Decodează Unicode , listând pe Wiki și comentând toate cele 98.884 de caractere Unicode din imagini.
  • (fr) CoeurLumiere.com , tabel simplu de caractere Unicode de la U + 0000 la U + FFFF (rețineți, unele sunt invalide în HTML și nu sunt raportate).
Ghiduri de utilizare Discuții și articole
  • (ro) Unicode, scrierea lumii? ( vol.  6 (2003) al revistei Digital Document , 364 pagini ). Interes: puncte de vedere critice (tipografi, informaticieni, egiptologi  etc. ) și interviu cu Ken Whistler , director tehnic al Consorțiului Unicode .
  • (en) Otfried Cheong, UniHan (articol privind sinogram probleme de unificare cu UniHan în Unicode)