ASCII și Unicode sunt ambele standarde care se referă la reprezentarea digitală a textului, în special caractere care alcătuiesc textul. Cu toate acestea, cele două standarde sunt semnificativ diferite, multe proprietăți reflectând ordinea lor de creație.
America versus Univers
În mod surprinzător, Codul standard american pentru schimbul de informații (ASCII) se adresează unui public american, care scrie în alfabetul englez. Se ocupă de litere neaccentuate, cum ar fi A-Z și a-z, plus un număr mic de simboluri de punctuație și caractere de control.
În special, nu există nicio modalitate de a reprezenta cuvintele de împrumut adoptate din alte limbi, cum ar fi cafenea în ASCII, fără a le angliciza prin substituirea caracterelor accentuate (de ex., cafenea). Extensiile ASCII localizate au fost dezvoltate pentru a satisface nevoile diferitelor limbi, dar aceste eforturi au făcut interoperabilitatea incomodă și au întins în mod clar capacitățile ASCII.
În schimb, setul de caractere codificat universal (Unicode) se află la capătul opus al scalei de ambiție. Unicode încearcă să răspundă cât mai multor sisteme de scriere din lume, în măsura în care acoperă limbi străvechi și setul preferat de simboluri expresive al tuturor, emoji.
Set de caractere sau codificare de caractere?
În termeni simpli, un set de caractere este o selecție de caractere (de exemplu, A-Z) în timp ce un caracter codificarea este o mapare între un set de caractere și o valoare care poate fi reprezentată digital (de exemplu, A = 1, B = 2).
Standardul ASCII este efectiv ambele: definește setul de caractere pe care îl reprezintă și o metodă de mapare a fiecărui caracter la o valoare numerică.
În schimb, cuvântul Unicode este folosit în mai multe contexte diferite pentru a însemna lucruri diferite. Vă puteți gândi la acesta ca la un termen cuprinzător, cum ar fi ASCII, pentru a face referire la un set de caractere și la o serie de codificări. Dar, deoarece există mai multe codificări, termenul Unicode este adesea folosit pentru a se referi la setul general de caractere, mai degrabă decât la modul în care sunt mapate.
mărimea
Datorită domeniului său de aplicare, Unicode reprezintă mult mai multe caractere decât ASCII. ASCII standard folosește un interval de 7 biți pentru a codifica 128 distincte personaje. Unicode, pe de altă parte, este atât de mare încât trebuie să folosim o terminologie diferită doar pentru a vorbi despre asta!
Unicode răspunde la 1.111.998 adresabile puncte de cod. Un punct de cod este aproximativ analog cu un spațiu rezervat unui personaj, dar situația este mult mai complicată decât atunci când începi să aprofundezi detaliile!
O comparație mai utilă este numărul de scripturi (sau sisteme de scriere) acceptate în prezent. Desigur, ASCII se ocupă doar de alfabetul englezesc, în esență, scrisul latin sau roman. Versiunea Unicode produsă în 2020 merge mult mai departe: include suport pentru un total de 154 de scripturi.
Depozitare
Intervalul de 7 biți ASCII înseamnă că fiecare caracter este stocat într-un singur octet de 8 biți; bitul de rezervă nu este utilizat în ASCII standard. Acest lucru face ca calculele de dimensiune să fie banale: lungimea textului, în caractere, este dimensiunea fișierului în octeți.
Puteți confirma acest lucru cu următoarea secvență de comenzi bash. Mai întâi, creăm un fișier care conține 12 litere de text:
$ echo -n 'Hello, world'> foo
Pentru a verifica dacă textul se află în codificarea ASCII, putem folosi fişier comanda:
$ file foo
foo: text ASCII, fără terminatori de linie
În cele din urmă, pentru a obține numărul exact de octeți pe care îl ocupă fișierul, folosim stat comanda:
$ stat -f% z foo
12
Deoarece standardul Unicode se ocupă de o gamă mult mai mare de caractere, un fișier Unicode ocupă în mod natural mai mult spațiu de stocare. Exact cât depinde de codificare.
Repetarea aceluiași set de comenzi dinainte, folosind un caracter care nu poate fi reprezentat în ASCII, dă următoarele:
$ echo -n '€'> foo
$ file foo
foo: text Unicode UTF-8, fără terminatori de linie
$ stat -f% z foo
3
Acest singur caracter ocupă 3 octeți într-un fișier Unicode. Rețineți că bash a creat automat un fișier UTF-8, deoarece un fișier ASCII nu poate stoca caracterul ales (€). UTF-8 este de departe cea mai comună codificare a caracterelor pentru Unicode; UTF-16 și UTF-32 sunt două codificări alternative, dar sunt utilizate mult mai puțin.
UTF-8 este o codificare cu lățime variabilă, ceea ce înseamnă că folosește cantități diferite de stocare pentru diferite puncte de cod. Fiecare punct de cod va ocupa între unu și patru octeți, cu intenția ca mai multe caractere comune să necesite mai puțin spațiu, oferind un tip de compresie încorporată. Dezavantajul este că determinarea lungimii sau a dimensiunilor cerințelor unui anumit fragment de text devine mult mai complicată.
ASCII este Unicode, dar Unicode nu este ASCII
Pentru compatibilitate inversă, primele 128 de puncte de cod Unicode reprezintă caracterele ASCII echivalente. Deoarece UTF-8 codifică fiecare dintre aceste caractere cu un singur octet, orice text ASCII este, de asemenea, un text UTF-8. Unicode este un superset al ASCII.
Cu toate acestea, așa cum se arată mai sus, multe fișiere Unicode nu pot fi utilizate într-un context ASCII. Orice caracter care este în afara limitelor va fi afișat într-o manieră neașteptată, adesea cu caractere înlocuite care sunt complet diferite de cele care au fost intenționate.
Utilizare modernă
În majoritatea scopurilor, ASCII este considerat în mare măsură un standard vechi. Chiar și în situații care acceptă doar scrierea latină - unde este un sprijin deplin pentru complexitățile Unicode inutil, de exemplu - este de obicei mai convenabil să utilizați UTF-8 și să profitați de ASCII compatibilitate.
În special, paginile web ar trebui să fie salvate și transmise folosind UTF-8, care este implicit pentru HTML5. Acest lucru este în contrast cu web-ul anterior, care se ocupa implicit de ASCII înainte ca acesta să fie înlocuit de Latin 1.
Un standard care se schimbă
Ultima revizuire a ASCII a avut loc în 1986.
În schimb, Unicode continuă să fie actualizat anual. Se adaugă în mod regulat noi scripturi, personaje și, în special, emoji noi. Cu doar o mică parte din acestea alocate, setul complet de caractere este probabil să crească și să crească pentru viitorul previzibil.
Legate de: Cele mai populare 100 de emojiuri explicate
Există atât de multe emoji, încât poate fi dificil să știi ce înseamnă toate. Iată cele mai populare emojiuri explicate.
ASCII Versus Unicode
ASCII și-a îndeplinit scopul timp de mai multe decenii, dar Unicode l-a înlocuit în mod eficient în toate scopurile practice, altele decât sistemele vechi. Unicode este mai mare și, prin urmare, mai expresiv. Reprezintă un efort de colaborare la nivel mondial și oferă o flexibilitate mult mai mare, deși în detrimentul unei anumite complexități.
Textul ASCII pare criptic, dar are multe utilizări în jurul internetului.
- Tehnologie explicată
- Emojis
- Jargon
- Cultura web
- Unicode
Bobby este un pasionat de tehnologie care a lucrat ca dezvoltator de software timp de aproape două decenii. Este pasionat de jocuri, lucrează ca editor de recenzii la Switch Player Magazine și este cufundat în toate aspectele publicării online și dezvoltării web.
Aboneaza-te la newsletter-ul nostru
Alăturați-vă newsletter-ului pentru sfaturi tehnice, recenzii, cărți electronice gratuite și oferte exclusive!
Încă un pas…!
Vă rugăm să confirmați adresa de e-mail în e-mailul pe care tocmai vi l-am trimis.