Ministerul Educaţiei și Cercetării al Republicii Moldova
Universitatea Tehnică a Moldovei
Facultatea Calculatoare, Informatică și Microelectronică
RAPORT
la Analiza și sinteza dispozitivelor electronice
Tema: Standartul UNICODE
A efectuat:
st. gr. FI-211 Nistrean Zinaida
A verificat: Ana Țurcan
Chişinău – 2022
Cuprins
1)Origine,Consorțiul UNICODE................................................................................3
2)Sisteme de operare...................................................................................................4
3)Importanța UNICODE.............................................................................................4
4)UNICODE 15.0........................................................................................................5
5)UTF-8.......................................................................................................................6
6)UTF-16.....................................................................................................................7
7)UTF-32.....................................................................................................................8
8)Bibliografie..............................................................................................................9
2
Origine – Standartul UNICODE
Unicode - sistem internațional de codificare a caracterelor conceput pentru a sprijini schimbul
electronic, procesarea și afișarea textelor scrise din diversele limbi ale lumii moderne și clasice. Standardul
Unicode include litere, cifre, semne diacritice, semne de punctuație și simboluri tehnice pentru toate
principalele limbi scrise ale lumii, precum și emoji și alte simboluri, folosind o schemă de codificare
uniformă. Standardul este menținut de Consorțiul Unicode. Prima versiune de Unicode a fost introdusă în
1991; cea mai recentă versiune conține mai mult de 100.000 de caractere. Numeroase sisteme de codare
(inclusiv ASCII) preced Unicode. Cu Unicode (spre deosebire de sistemele anterioare), numărul unic
furnizat pentru fiecare caracter rămâne același pe orice sistem care acceptă [Link] are scopul
explicit de a depăși limitările codificărilor tradiționale de caractere, cum ar fi cele definite de standardul
ISO/IEC 8859, care sunt utilizate pe scară largă în diferite țări ale lumii, dar rămân în mare parte
incompatibile între ele. Multe codificări tradiționale de caractere împărtășesc o problemă comună prin
faptul că permit procesarea computerizată bilingvă (de obicei folosind caractere latine și scrierea locală),
dar nu procesarea computerizată multilingvă (procesarea computerizată a scripturilor arbitrare amestecate
unele cu altele).
Unicode, în intenție, codifică caracterele subiacente - grafeme și unități asemănătoare grafemelor -
și nu variantele de glife (redări) pentru astfel de caractere. În cazul caracterelor chinezești, acest lucru duce
uneori la controverse privind distingerea caracterului de bază de glifele sale variante.
În procesarea textului, Unicode are rolul de a furniza un punct de cod unic - un număr, nu un glif -
pentru fiecare caracter. Cu alte cuvinte, Unicode reprezintă un caracter într-un mod abstract și lasă redarea
vizuală (dimensiune, formă, font sau stil) altor programe, cum ar fi un browser web sau un procesor de text.
Acest obiectiv simplu devine însă complicat din cauza concesiilor făcute de designerii Unicode în speranța
de a încuraja o adoptare mai rapidă a Unicode.
Primele 256 de puncte de cod au fost făcute identice cu conținutul ISO/IEC 8859-1, astfel încât să
fie trivială convertirea textului occidental existent. Multe caractere în esență identice au fost codificate de
mai multe ori în puncte de cod diferite pentru a păstra distincțiile utilizate de codificările vechi și, prin
urmare, pentru a permite conversia din acele codificări în Unicode (și înapoi) fără a pierde nicio informație.
De exemplu, secțiunea „formulare cu lățime completă” a punctelor de cod cuprinde o copie completă a
alfabetului latin, deoarece fonturile chinezești, japoneze și coreene (CJK) conțin două versiuni ale acestor
litere, „lățime completă” care se potrivește cu lățimea caracterelor CJK și latime normala. Pentru alte
exemple, consultați caractere duplicate în Unicode.
Beneficiarii Premiului Unicode Bulldog includ multe nume influente în dezvoltarea Unicode și
includ Tatsuo Kobayashi, Thomas Milo, Roozbeh Pournader, Ken Lunde și Michael Everson.
Consorțiul Unicode a fost înființat în 1991, după ce ani de zile au discutat despre o nouă codificare
a caracterelor numită „Unicode” de către Joe Becker de la Xerox și Lee Collins și Mark Davis de la Apple.
Consorțiul Unicode
Consorțiul Unicode este o organizație non-profit fondată pentru a dezvolta,
extinde și promova utilizarea standardului Unicode și a standardelor de globalizare
aferente, care specifică reprezentarea textului în produse software moderne și alte
standarde. Consorțiul este susținut financiar prin cotizații și donații. Calitatea de
membru al Consorțiului Unicode este deschisă organizațiilor și persoanelor de
oriunde în lume care susțin standardul Unicode și doresc să asiste la extinderea și
implementarea acestuia. Toți sunt invitați să contribuie la susținerea lucrării
importante a Consorțiului făcând o donație.
Scopul Consorțiului Unicode este de a dezvolta și promova utilizarea standardului Unicode și a altor
standarde conexe în întreaga lume.
Mai simplu spus, standardul Unicode folosește numere pentru a reprezenta un set de caractere și
lasă conversia la latitudinea oricărui software care este utilizat. Există o mulțime de alte standarde care fac
lucruri similare, dar Standardul Unicode este compatibil cu cele mai utilizate standarde internaționale, ceea
ce face calculul multilingv mult mai ușor.
3
Sisteme de operare
Unicode a devenit schema dominantă pentru procesarea și stocarea internă a textului. Deși o mare
parte de text este încă stocată în codificări vechi, Unicode este folosit aproape exclusiv pentru construirea
de noi sisteme de procesare a informațiilor. Primii adoptatori au avut tendința de a utiliza UCS-2
(precursorul învechit de doi octeți cu lățime fixă a UTF-16) și mai târziu s-au mutat la UTF-16 (standardul
curent cu lățime variabilă), deoarece acesta era cel mai puțin perturbator mod de a adăuga suport pentru
caractere non-BMP. Cel mai cunoscut astfel de sistem este Windows NT (și descendenții săi, 2000, XP,
Vista, 7, 8, 10 și 11), care utilizează UTF-16 ca unică codificare internă a caracterelor. Mediile Java
și .NET bytecode, macOS și KDE îl folosesc și pentru reprezentarea internă. Suportul parțial pentru
Unicode poate fi instalat pe Windows 9x prin Microsoft Layer pentru Unicode.
UTF-8 a devenit principala codificare de stocare pe majoritatea sistemelor de operare
asemănătoare Unix (deși altele sunt folosite și de unele biblioteci), deoarece este un înlocuitor relativ ușor
pentru seturile tradiționale de caractere ASCII extinse. UTF-8 este, de asemenea, cea mai comună
codificare Unicode utilizată în documentele HTML de pe World Wide Web.
Importanța standartului UNICODE
Unicode oferă un număr unic pentru fiecare caracter,
indiferent de platforma,
indiferent de program,
indiferent de limbaj.
În principiu, computerele se ocupă cu numere, nu cu caractere sau litere. Standardul Unicode
descrie caracterele utile ca numere pentru a permite software-ului să convertească datele cu ușurință și fără
un risc ridicat de corupție. Înainte de a exista un standard general, unificat, computerele foloseau sisteme
proprietare pentru a converti textul, ceea ce putea duce cu ușurință la date corupte și incorecte dacă
informațiile erau transmise la diferite computere. Necesitatea unui standard a devenit incontestabilă odată
ce Internetul a permis ca cantități enorme de date să fie transmise de tone de computere, ai căror utilizatori
preferau datele [Link] Unicode oferă un număr unic pentru fiecare caracter, indiferent de
platformă, dispozitiv, aplicație sau limbă. Acesta a fost adoptat de toți furnizorii moderni de software și
permite acum transportul datelor prin multe platforme, dispozitive și aplicații diferite fără corupție. E
formatul ce permite codificarea și afișarea corectă a caracterelor din majoritatea sistemelor internaționale.
Aceeași tehnologie este folosită pentru standardizarea și codificarea simbolurilor și emoji-urilor.
Standardele Unicode acoperă mai multe formate de codare a caracterelor, cum ar fi UTF-8, UTF-16 și
UTF-32.
Standardul Unicode folosește câteva tipuri de codificare a caracterelor, dar cel mai mic tip, mai
utilizabil este UTF-8 (Unicode Transformation Format 8bit). Alte tipuri includ UTF-16, UTF-32, dar nu
sunt compatibile cu ASCII, în timp ce UTF-8 este. HTML 5 acceptă atât UTF-8, cât și UTF-16. Sistemele
de operare majore, cum ar fi Microsoft Windows, utilizează UTF-16.
UTF-8 codifică caractere folosind 1 până la 4 octeți per caracter. Primele 128 de caractere sunt
codificate exact în același mod ca ASCII, ceea ce le face complet compatibile înapoi. Folosește valori
zecimale și hexazecimale pentru a reprezenta caracterele.
Unicode este setul de caractere care traduce caracterele în numere, iar UTF-8 este codificatorul
care traduce numerele în binar.
4
UNICODE 15.0
(2022 13 Septembrie)
Unicode 15.0 adaugă 4.489 de caractere, pentru un total de 149.186 de caractere. Aceste completări
includ 2 scripturi noi, pentru un total de 161 de scripturi, împreună cu 20 de caractere emoji noi și 4.193
de ideografii CJK (chineză, japoneză și coreeană). Noile scripturi și caractere din Versiunea 15.0 adaugă
suport pentru limbi mai puțin utilizate și cerințe scrise unice la nivel mondial, inclusiv numeroase
adăugări de simboluri. Fondurile din programul Adopt-a-Character au oferit sprijin pentru unele dintre
aceste completări.
Noile scenarii și personaje includ:
Nag Mundari, o scriere modernă folosită pentru a scrie Mundari, o limbă vorbită în India
Un personaj kannada obișnuia să scrie Konkani, Awadhi și Havyaka Kannada în India
Numerele Kaktovik, concepute de vorbitorii de Iñupiaq din Kaktovik, Alaska pentru sistemele de
numărare ale limbilor Inuit și Yupik
Adăugări de simbol populare: 20 de caractere emoji, inclusiv strângere de păr, maracas, meduze, khanda
și inimă roz.
Alte adăugări de simboluri și notații includ:
Simbolul steluței albe cu nouă colțuri, folosit de membrii credinței Bahá’í
Opt simboluri pentru corpurile cerești, folosite de astronomi și astrologi
Douăzeci și nouă de controale suplimentare pentru formatul hieroglifelor egiptene, care le vor
permite egiptologilor să reprezinte mai bine textele
Suportul pentru alte limbi și munca academică din întreaga lume include:
Kawi, o scriere istorică găsită în Asia de Sud-Est, obișnuia să scrie javaneza veche și alte limbi
Trei caractere suplimentare pentru scrierea arabă pentru a sprijini mărcile coranice utilizate în
Turcia
Un nou semn Lao folosit pentru a scrie Lao Pali
Trei caractere Khojki găsite în documente scrise de mână și tipărite
Zece caractere Devanagari reprezentau semne de bun augur găsite în inscripții și manuscrise
Șase litere latine utilizate în transliterarea malayalam
Șaizeci și trei de litere modificatoare chirilice utilizate în transcrierea fonetică
hieroglifă egipteană suplimentară
Actualizări importante ale fontului diagramei, inclusiv:
Un set de glife actualizate pentru hieroglifele egiptene, în plus față de secvențele de variații
standardizate pentru a sprijini glifele rotite găsite în texte
Glife îmbunătățite pentru silabici aborigeni canadieni unificați, care oferă un suport mai bun
pentru Carrier și alte limbi
Un nou font Wancho, cu forme îmbunătățite și simplificate
5
UTF-8 este o codificare de caractere cu lățime variabilă utilizată pentru comunicațiile electronice.
Definit de standardul Unicode, numele este derivat din formatul de transformare Unicode (sau set de
caractere codificate universal) – 8 biți. UTF-8 este capabil să codifice toate 1.112.064 puncte de cod de
caractere valide în Unicode utilizând unul până la patru unități de cod de un octet (8 biți). Punctele de cod
cu valori numerice mai mici, care tind să apară mai frecvent, sunt codificate folosind mai puțini octeți. A
fost proiectat pentru compatibilitate cu ASCII: primele 128 de caractere din Unicode, care corespund unu
la unu cu ASCII, sunt codificate folosind un singur octet cu aceeași valoare binară ca ASCII, astfel încât
textul ASCII valid să fie valid UTF-8 -codat Unicode, de asemenea. UTF-8 a fost conceput ca o alternativă
superioară UTF-1, o codificare propusă cu lățime variabilă, cu compatibilitate parțială ASCII, care nu avea
unele caracteristici, inclusiv auto-sincronizarea și gestionarea complet compatibilă cu ASCII a caracterelor,
cum ar fi barele oblice. Ken Thompson și Rob Pike au produs prima implementare pentru sistemul de
operare Plan 9 în septembrie [Link] lucru a condus la adoptarea sa de către X/Open ca specificație
pentru FSS-UTF,care va fi prezentată pentru prima dată oficial la USENIX în ianuarie 1993 și ulterior
adoptată de Internet Engineering Task Force (IETF) în RFC 2277 ( BCP 18) pentru viitoarele standarde de
internet, înlocuind seturile de caractere cu un singur octet, cum ar fi Latin-1, în RFC-urile mai vechi. UTF-
8 este codificarea dominantă pentru World Wide Web (și tehnologiile internet), reprezentând 98% din toate
paginile web și până la 100,0% pentru unele limbi, începând cu 2022.
UTF-8 codifică punctele de cod în unu până la patru octeți, în funcție de valoarea punctului de
cod. Caracterele x sunt înlocuite cu biții punctului de cod.
Primele 128 de puncte de cod (ASCII) au nevoie de un octet. Următoarele 1.920 de puncte de cod
au nevoie de doi octeți pentru a fi codificate, care acoperă restul aproape tuturor alfabetelor în grafie latină,
precum și extensii IPA, alfabetele grecești, chirilice, copte, armeane, ebraice, arabe, siriace, Thaana și
N'Ko, ca precum și Combinarea semnelor diacritice. Sunt necesari trei octeți pentru restul planului
multilingv de bază, care conține practic toate punctele de cod utilizate în mod obișnuit, inclusiv majoritatea
caracterelor chinezești, japoneze și coreene. Sunt necesari patru octeți pentru punctele de cod din celelalte
planuri ale Unicode, care includ caractere CJK mai puțin obișnuite, diverse scripturi istorice, simboluri
matematice și emoji (simboluri pictografice).
Un „caracter” poate lua mai mult de 4 octeți, deoarece este format din mai multe puncte de cod.
De exemplu, un caracter steag național are 8 octeți, deoarece este „construit dintr-o pereche de valori
scalare Unicode” ambele din afara BMP.
Emoji -ul 😭 are punctul de cod Unicode U+1F62D. Aceasta este mai mare decât valoarea
maximă care poate fi reprezentată folosind codificarea de 3 octeți și, prin urmare, va fi reprezentată
folosind codificarea de 4 octeți.
Codificarea pe 4 octeți este identificată prin prezența lui 11110 în primul octet și a 10 în al doilea,
al treilea și al patrulea octet ulterior.
11110, 10,10, 10 biți în ordinea superioară a primului,
al doilea, al treilea și al patrulea octet indică codificarea
pe 4 octeți
Reprezentarea binară a lui U+1F62D este 11111011000101101. Completarea acestor biți în formatul de codificare
de mai sus ne oferă codarea UTF-8 de 4 octeți a 😭. Bitul cel mai puțin semnificativ al punctului de cod este mapat
la bitul cel mai puțin semnificativ al celui de-al patrulea octet și așa mai departe.
6
UTF-16 (format de transformare Unicode pe 16 biți) este o codificare de caractere capabilă să codifice
toate cele 1.112.064 de puncte de cod valide ale Unicode (de fapt, acest număr de puncte de cod este
dictat de designul UTF-16). Codificarea este de lungime variabilă, deoarece punctele de cod sunt
codificate cu una sau două unități de cod de 16 biți. UTF-16 a apărut dintr-o codificare anterioară,
depășită, pe 16 biți, cu lățime fixă, cunoscută acum sub numele de UCS-2 (pentru set de caractere
universal de 2 octeți), odată ce a devenit clar că sunt necesare mai mult de 216 (65.536) puncte de cod.
UTF-16 este utilizat de sisteme precum Microsoft Windows API, limbajul de programare Java și
JavaScript/ECMAScript. De asemenea, este uneori folosit pentru fișiere de text simplu și de procesare a
textului pe Microsoft Windows. Este rar folosit pentru fișiere pe sisteme asemănătoare Unix. Din mai
2019, Microsoft a început să sprijine UTF-8 (precum și UTF-16) și să încurajeze utilizarea acestuia.
UTF-16 este singura codificare web incompatibilă cu ASCII și nu a câștigat niciodată popularitate pe
web, unde este folosit de sub 0,002% (puțin peste 1 miime din 1 la sută) din paginile [Link]-8, prin
comparație, reprezintă 98% din toate paginile [Link] Hypertext Application Technology Working
Group (WHATWG) consideră UTF-8 „codificarea obligatorie pentru tot și că, din motive de securitate,
aplicațiile browser nu ar trebui să folosească [Link] folosit de SMS (adică UTF-16 cu lungime
variabilă necesar pentru a accepta toate caracterele emoji, standardul SMS specifică predecesorul său
UCS-2 cu lățime fixă, care nu acceptă majoritatea dintre ele).
Codificarea UTF-16 este o schemă de codare variabilă de octeți care utilizează fie 2 octeți, fie 4 octeți
pentru a reprezenta punctele de cod Unicode. Majoritatea caracterelor pentru toate limbile moderne sunt
reprezentate folosind 2 octeți.
De exemplu Litera ñ din alfabetul latin cu punctul de cod U+00F1 și cu valoarea binară 11110001 este
reprezentata în codificarea UTF-16 ca 0000000011110001. Reprezentarea aceasta este în modul Big
Endian Byte Order (bitul cel mai semnificativ mai întâi).
Primele 216 puncte de cod Unicode. Dunga de gri solid din partea de jos sunt jumătățile
surogat utilizate de UTF-16 (regiunea albă de sub dungă este Zona de utilizare privată)
7
UTF-32 (formatul de transformare Unicode pe 32 de biți) este o codificare cu lungime fixă
folosită pentru a codifica puncte de cod Unicode care utilizează exact 32 de biți (patru octeți) per punct de
cod (dar un număr de biți de început trebuie să fie zero, deoarece există mult mai puțini peste 232 de
puncte de cod Unicode, având nevoie de fapt doar de 21 de biț[Link]-32 este o codificare cu lungime fixă,
spre deosebire de toate celelalte formate de transformare Unicode, care sunt codificări cu lungime
variabilă. Fiecare valoare de 32 de biți din UTF-32 reprezintă un punct de cod Unicode și este exact egală
cu valoarea numerică a acelui punct de cod.
Principalul avantaj al UTF-32 este că punctele de cod Unicode sunt indexate direct. Găsirea celui
de-al N-lea punct de cod într-o secvență de puncte de cod este o operație în timp constant. În schimb, un
cod cu lungime variabilă necesită timp liniar pentru a număra N puncte de cod de la începutul șirului.
Acest lucru face ca UTF-32 o înlocuire simplă în cod care utilizează numere întregi care sunt
incrementate cu unu pentru a examina fiecare locație dintr-un șir, așa cum se face de obicei pentru ASCII.
Cu toate acestea, punctele de cod Unicode sunt rareori procesate izolat complet, cum ar fi combinarea
secvențelor de caractere și pentru emoji.
Principalul dezavantaj al UTF-32 este că este ineficient în spațiu, folosind patru octeți per punct
de cod, inclusiv 11 biți care sunt întotdeauna zero. Caracterele dincolo de BMP sunt relativ rare în
majoritatea textelor (cu excepția, de exemplu, a textelor cu unele emoji-uri populare) și pot fi de obicei
ignorate pentru estimările de dimensiune. Acest lucru face ca UTF-32 să fie aproape de două ori mai mare
decât UTF-16. Poate fi de până la patru ori mai mare decât UTF-8, în funcție de câte caractere sunt în
subsetul ASCII. Utilizarea principală a UTF-32 este în API-urile interne în care datele sunt puncte de cod
unice sau glife, mai degrabă decât șiruri de caractere. De exemplu, în redarea modernă a textului, este
obișnuit ca ultimul pas să fie construirea unei liste de structuri care să conțină fiecare coordonate (x,y),
atribute și un singur punct de cod UTF-32 care identifică gliful de desenat. Adesea, informațiile non-
Unicode sunt stocate în cei 11 biți „neutilizați” ai fiecărui cuvânt.
Codarea UTF-32 este o schemă de codificare cu octeți fix și folosește 4 octeți pentru a reprezenta
toate punctele de cod.
De exemplu litera A din alfabetul englez are punctul de cod Unicode U+0041. Reprezentarea sa
binară este [Link] reprezentat în codificare UTF-32, așa cum se arată mai jos,
00000000 00000000 00000000 01000001
Biții roșii sunt reprezentarea binară a punctului de cod. Cele de mai sus presupune modul de
ordine Big Endian Byte.
8
Bibliografie
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]