Care este diferența dintre textul ASCII și textul Unicode?

Care este diferența dintre textul ASCII și textul Unicode?

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

Codul standard american pentru schimbul de informații (ASCII), în mod surprinzător, 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 cafea în ASCII, fără a le angliza prin substituirea caracterelor accentuate (de ex., cafenea ). Extensiile ASCII localizate au fost dezvoltate pentru a răspunde nevoilor diferitelor limbi, dar aceste eforturi au făcut interoperabilitatea incomodă și au întins în mod clar capacitățile ASCII.





În contrast, 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 o codificare a caracterelor 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 utilizează 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 1111998 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 dimensiunilor 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:

cum să obțineți pokemon pe iPhone
$ echo -n 'Hello, world' > foo

Pentru a verifica dacă textul este în codificarea ASCII, putem folosi fişier comanda:

$ file foo
foo: ASCII text, with no line terminators

Î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: UTF-8 Unicode text, with no line terminators
$ stat -f%z foo
3

Acel 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 unei anumite bucăți 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 scriptul latin - în care suportul complet pentru complexitățile Unicode nu este necesar, de exemplu - este de obicei mai convenabil să folosiți UTF-8 și să profitați de compatibilitatea ASCII.

cum să-ți faci telefonul să se încarce mai repede

Î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ă în viitorul apropiat.

Legate de: Cele mai populare 100 de 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.

Acțiune Acțiune Tweet E-mail Ce este textul ASCII și cum este folosit?

Textul ASCII pare criptic, dar are multe utilizări în jurul internetului.

Citiți în continuare
Subiecte asemănătoare
  • Tehnologie explicată
  • Emojis
  • Jargon
  • Cultura web
  • Unicode
Despre autor Bobby Jack(58 articole publicate)

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.

Mai multe de la Bobby Jack

Aboneaza-te la newsletter-ul nostru

Alăturați-vă newsletter-ului pentru sfaturi tehnice, recenzii, cărți electronice gratuite și oferte exclusive!

Faceți clic aici pentru a vă abona