Unicode este un minim necesar pentru fiecare dezvoltator

Unicode este o lume foarte mare și complexă, deoarece standardul vă permite să vă imaginați și să lucrați în calculator cu toate limbile majore scrise ale lumii.





Unele sisteme de scriere au existat de mai bine de o mie de ani, multe dintre ele dezvoltându-se aproape în mod independent unul de celălalt în diferite părți ale lumii. Oamenii au inventat atât de multe lucruri și este adesea atât de diferit încât să combine toate acestea într-un singur standard era o sarcină extrem de dificilă și ambițioasă.







Pentru a înțelege cu adevărat Unicode, trebuie să vă imaginați cel puțin superficial caracteristicile tuturor scenariilor cu care standardul vă permite să lucrați. Dar este pentru fiecare dezvoltator? Vom spune că nu. Pentru a utiliza Unicode în majoritatea sarcinilor de zi cu zi, este suficient să aveți un minim de informații rezonabile și apoi să mergeți adânc în standard după cum este necesar.

În acest articol, vom discuta principiile de bază ale Unicode și vom evidenția problemele practice importante pe care dezvoltatorii le vor întâlni în mod inevitabil în munca lor zilnică.

De ce am nevoie de Unicode?

Înainte de apariția Unicode, codificările pe un octet aproape universal utilizate, în cazul în care limita între ele simboluri ale reprezentării lor în memoria calculatorului și afișarea pe ecran a fost destul de convențională. Dacă ați lucrat cu unul sau o altă limbă națională, în sistemul dumneavoastră fonturile corespunzătoare, au fost stabilite codificări, ceea ce a permis să atragă bytes de pe disc de pe ecran, astfel încât acestea au fost semnificative pentru utilizator.

Dacă ați imprimat fișierul text și o pagină de hârtie, ai văzut un set de păsărească de neînțeles, a însemnat că dispozitivul de imprimare nu este încărcat cu fonturi corespunzătoare și interpretează octeți nu sunt așa cum vă doriți.

Această abordare, în ansamblu, și codificările cu un singur octet, în particular, a avut o serie de dezavantaje semnificative:

  1. A fost posibil să se lucreze simultan cu doar 256 de caractere, cu primul 128 au fost rezervate pentru latini și caractere de control, iar în a doua jumătate, cu excepția caracterului național a trebuit să găsească un loc pentru pseudo-caractere (╔ ╗).
  2. Fonturile au fost legate de o codificare specifică.
  3. Fiecare codare reprezintă un set diferit de caractere și de conversie de la unul la altul a fost posibilă doar cu pierderi parțiale în cazul în care nu există caractere sunt înlocuite cu similare grafic.
  4. Transferul de fișiere între dispozitive care rulează sisteme de operare diferite a fost dificil. A fost necesar fie să aveți un program de conversie, fie să trageți împreună cu fonturile suplimentare ale fișierului. Existența Internetului așa cum o știm era imposibilă.
  5. În lume există sisteme non-alfabetice de scriere (scrierea hieroglifică), care, în codificarea de un octet, sunt inimaginabile în principiu.

Principiile de bază ale Unicode

Cu toții înțelegem perfect că calculatorul nu cunoaște entități ideale, ci operează cu biți și octeți. Dar sistemele informatice sunt create de oameni, nu de mașini, iar pentru noi uneori este mai convenabil să lucrăm cu concepte speculative și apoi să trecem de la abstract la beton.

Important! Unul dintre principiile centrale ale filozofiei în Unicode este o distincție clară între personaje și reprezentarea lor într-un calculator și de afișare pe dispozitivul de ieșire.

Introducem conceptul unui simbol abstract Unicode, care există exclusiv sub forma unui concept conceptual și a unui acord între oameni, stabilit de standard. Fiecărui caracter unicode i se atribuie un întreg non-negativ numit punctul său de cod.

De exemplu, caracterul Unicode U + 041F - este un capital chirilic scrisoare P. Există mai multe moduri de prezentare de caractere în memoria calculatorului, chiar mii de moduri de a afișa pe ecran. Dar, în același timp, va fi în P sau U + 041F în Africa.

Unicode este un minim necesar pentru fiecare dezvoltator

Este binecunoscută încapsularea sau separarea interfeței de implementare - un concept care sa dovedit în programare.

Se pare că, după ghidarea standardului, orice text poate fi codificat ca o secvență de caractere Unicode

scrieți pe o bucată de hârtie, împachetați-o într-un plic și trimiteți-o în orice capăt al Pământului. Dacă știu despre existența Unicode, textul va fi perceput de aceștia exact așa cum facem cu voi. Ei nu vor avea nici cea mai mică îndoială că penultimul simbol este caracterele chirilice e (U + 0435) și nu limba latină e (U + 0065). Rețineți că nu am spus un cuvânt despre reprezentarea byte.

Spațiu de cod Unicode

Spațiul de cod Unicode conține 1 114 112 poziții de cod în intervalul de la 0 la 10FFFF. Dintre acestea, versiunea nouă a valorilor standard sunt atribuite numai 128 237. O parte a spațiului este rezervată pentru uz privat și Unicode consorțiu promite să nu atribuie valori pozițiile acestor zone speciale.

Dacă vrem să trimitem text prin Internet, trebuie să codificăm secvența caracterelor Unicode ca o secvență de octeți.

Unicode standard include o descriere a unui număr de seturi de caractere Unicode, cum ar fi UTF-8 și UTF-16BE / UTF-16LE, care permite să codifice toate punctele de cod spațiu. Conversia între aceste codificări poate fi efectuată fără pierderi de informații.

De asemenea, nimeni nu a anulat codificările cu un singur octet, dar acestea vă permit să codificați piesa individuală și foarte îngustă a spectrului Unicode - 256 sau mai puțin poziții de cod. Pentru astfel de codificări, există și sunt disponibile pentru toate tabelele interesate, unde fiecare valoare octet unică este asociată cu un caracter Unicode (a se vedea, de exemplu, CP1251.TXT). În ciuda limitărilor, codificările cu un singur octet se dovedesc a fi foarte practice dacă aveți de-a face cu o gamă largă de informații de text monolingve.

Rețineți că UTF-8 este o codificare cu lungime variabilă. Fiecare simbol Unicode din el este reprezentat de o secvență de cuantite de cod cu o lungime minimă de un cuantum. Numărul 8 indică lungimea bitului blocului de cod (unitate de cod) - 8 biți. Pentru familia de codare UTF-16, mărimea codului quant este de 16 biți, respectiv. Pentru UTF-32 - 32 biți.

Pentru a stoca aplicații de date șir de caractere utilizate în mod obișnuit de codificare de 16 biți Unicode datorită simplității lor, precum și faptul că simbolurile sistemelor majore ale lumii de a scrie un cuantum codificat șaisprezece biți. De exemplu, Java aplică cu succes UTF-16 pentru reprezentarea șirului intern. Sistemul de operare Windows utilizează de asemenea intern UTF-16.

În orice caz, atâta timp cât rămânem în spațiul Unicode, nu este atât de important modul în care informațiile despre șir sunt stocate într-o aplicație separată. În cazul în care formatul de stocare internă poate codifica în mod corect toate punctele de cod milioane-plus la granița cererii, cum ar fi atunci când citirea dintr-un fișier sau copiat în clipboard, nu există nici o pierdere de informații, atunci totul este bine.

În reziduul uscat

Există o mulțime de informații și este logic să oferim un scurt rezumat al tuturor lucrurilor scrise mai sus:

  • Unicode postulează o distincție clară între caractere, reprezentarea lor în computer și afișarea acestora pe dispozitivul de ieșire.
  • Spațiul de cod Unicode conține 1 114 112 poziții de cod în intervalul de la 0 la 10FFFF.
  • Planul de bază multilingv include caractere Unicode de la U + 0000 până la U + FFFF, care sunt codate în UTF-16 cu doi octeți.
  • Orice codare de caractere Unicode vă permite să codifica întregul spațiu de puncte de cod Unicode și de conversie între diferite codificări astfel se face fără pierderi de informații.
  • Codificările cu un singur octet vă permit să codificați numai o mică parte din spectrul Unicode, dar poate fi utilă atunci când lucrați cu o cantitate mare de informații monolingve.
  • Codificările UTF-8 și UTF-16 au o lungime variabilă a codului. În UTF-8, fiecare caracter Unicode poate fi codificat cu unul, doi, trei sau patru octeți. În UTF-16, doi sau patru octeți.
  • Formatul intern pentru stocarea informațiilor textuale într-o singură aplicație poate fi arbitrar cu condiția ca spațiul de cod Unicode să fie gestionat corect și să nu existe pierderi în transferul de date transfrontalier.

O scurtă notă despre codificare

Cu termenul de codificare, pot apărea unele confuzii. Unicode codifică de două ori. Pentru prima dată, un set de caractere Unicode (set de caractere) este codificat, în sensul că fiecare cod este atribuit unei poziții de cod. Ca parte a acestui proces, setul de caractere Unicode este transformat într-un set de caractere codificat. A doua oară, secvența caracterelor Unicode este convertită la un șir de octeți și acest proces se numește și codificare.

În terminologia vorbită în limba engleză, există două verbe diferite de a codifica și de a codifica, dar chiar vorbitori nativi sunt adesea confundați în ele. În plus, termenul set de caractere sau set de caractere este folosit ca sinonim pentru setul de caractere codificat.

Toate acestea spunem că este logic să acordăm atenție contextului și să distingem situațiile când vine vorba de poziția codului unui caracter abstract Unicode și când vine vorba de reprezentarea byte a acestuia.







Trimiteți-le prietenilor: