Pentru ca un computer să poată stoca text și numere pe care oamenii le pot înțelege, trebuie să existe un cod care să se transforme caractere în numere. Standardul Unicode definește un astfel de cod utilizând codarea caracterelor.
Motivul pentru care codarea caracterelor este atât de importantă, încât fiecare dispozitiv poate afișa aceleași informații. O schemă de codare a caracterelor personalizate poate funcționa strălucitor pe un computer, dar apar probleme atunci când trimiteți același text către altcineva. Nu va ști despre ce vorbești dacă nu înțelege și schema de codare.
Codificarea caracterelor
Toate codurile de caractere nu sunt atribuirea unui număr fiecărui caracter care poate fi utilizat. Ați putea crea un cod de caractere chiar acum.
De exemplu, aș putea spune că scrisoarea A devine numărul 13, a = 14, 1 = 33, # = 123 și așa mai departe.
Aici intră standarde din întreaga industrie. Dacă întreaga industrie de calculatoare utilizează aceeași schemă de codare a caracterelor, fiecare computer poate afișa aceleași caractere.
Ce este Unicode?
ASCII (Codul standard american pentru schimbul de informații) a devenit prima schemă de codificare răspândită. Cu toate acestea, este limitat la numai 128 de definiții de caractere. Acest lucru este în regulă pentru cele mai obișnuite caractere, numere și punctuații engleze, dar este un pic limitativ pentru restul lumii.
În mod firesc, restul lumii dorește aceeași schemă de codificare și pentru personajele lor. Cu toate acestea, de puțin timp, în timp ce depindeți de locul în care vă aflați, este posibil să fi fost afișat un caracter diferit pentru același cod ASCII.
Până la urmă, celelalte părți ale lumii au început să-și creeze propriile scheme de codificare, iar lucrurile au început să devină puțin confuze. Nu numai că schemele de codificare aveau diferite lungimi, programele trebuiau să-și dea seama ce schemă de codificare trebuiau să folosească.
A devenit evident că a fost nevoie de o nouă schemă de codificare a caracterelor, care este momentul în care a fost creat standardul Unicode. Obiectivul Unicode este unificarea tuturor diferitelor scheme de codificare, astfel încât confuzia dintre computere să poată fi limitată pe cât posibil.
În aceste zile, standardul Unicode definește valorile pentru peste 128.000 de caractere și pot fi văzute la Consorțiul Unicode. Are mai multe forme de codare a caracterelor:
- UTF-8: Utilizează doar un octet (8 biți) pentru a codifica caractere engleze. Poate folosi o secvență de octeți pentru a codifica alte caractere. UTF-8 este utilizat pe scară largă în sistemele de e-mail și pe internet.
- UTF-16: Utilizează doi octeți (16 biți) pentru a codifica caracterele cel mai des utilizate. Dacă este nevoie, caracterele suplimentare pot fi reprezentate de o pereche de numere de 16 biți.
- UTF-32: Utilizează patru octeți (32 biți) pentru a codifica caracterele. A devenit evident că pe măsură ce standardul Unicode a crescut, un număr de 16 biți este prea mic pentru a reprezenta toate caracterele. UTF-32 este capabil să reprezinte fiecare caracter Unicode ca un număr.
Notă: UTF înseamnă Unicode Transformation Unit.
Puncte de cod
Un punct de cod este valoarea pe care un caracter este dat în standardul Unicode. Valorile conform Unicode sunt scrise ca numere hexadecimale și au un prefix de U +.
De exemplu, pentru a codifica caracterele la care ne-am uitat mai devreme:
- A este U + 0041
- A este U + 0061
- 1 este U + 0031
- # este U + 0023
Aceste puncte de cod sunt împărțite în 17 secțiuni diferite numite planuri, identificate cu numerele 0 până la 16. Fiecare avion deține 65.536 puncte de cod. Primul plan, 0, conține cele mai frecvent utilizate caractere și este cunoscut sub numele de plan multilingv de bază (BMP).
Unități de cod
Schemele de codificare sunt formate din unități de cod, care sunt utilizate pentru a furniza un index pentru locul în care un personaj este poziționat pe un plan.
Luați în considerare UTF-16 ca exemplu. Fiecare număr de 16 biți este o unitate de cod. Unitățile de cod pot fi transformate în puncte de cod. De exemplu, simbolul notei plate ♭ are un punct de cod U + 1D160 și trăiește pe cel de-al doilea plan al standardului Unicode (suplimentar ideografic plan). Acesta va fi codat folosind combinația de unități de cod pe 16 biți U + D834 și U + DD60.
Pentru BMP, valorile punctelor de cod și ale unităților de cod sunt identice. Aceasta permite o scurtătură pentru UTF-16 care economisește mult spațiu de stocare. Trebuie să folosească un singur număr de 16 biți pentru a reprezenta acele caractere.
Cum folosește Java Unicode?
Java a fost creat în jurul perioadei în care standardul Unicode avea valori definite pentru un set de caractere mult mai mic. Pe atunci, s-a considerat că 16 biți ar fi mai mult decât suficiente pentru a codifica toate caracterele care vor fi vreodată necesare. Având în vedere acest lucru, Java a fost proiectat pentru a utiliza UTF-16. Tipul de date char a fost folosit inițial pentru a reprezenta un punct de cod Unicode pe 16 biți.
De la Java SE v5.0, încărcătura reprezintă o unitate de cod. Face mică diferență pentru reprezentarea caracterelor care se află în planul multilingv de bază, deoarece valoarea unității de cod este aceeași cu punctul de cod. Cu toate acestea, înseamnă că pentru personajele din celelalte planuri este nevoie de două caractere.
Important de reținut este că un singur tip de date char nu mai poate reprezenta toate caracterele Unicode.