Codificare UTF-8 a comunicațiilor digitale globale - IONOS

Oricine citește un site web în engleză sau un e-mail japonez nu este capabil doar să vorbească aceste limbi, dar este, de asemenea, cel mai probabil martor la progresul triumfător al UTF-8. „UTF-8” este abrevierea pentru „Format de transformare UCS pe 8 biți " și reprezintă cea mai răspândită codificare a personajelor de pe World Wide Web. Standardul internațional Unicode înregistrează toate caracterele lingvistice și elementele de text în (aproape) toate limbile din lume pentru procesare EDP. UTF-8 joacă un rol major în setul de caractere Unicode.

ionos

  1. Evoluția codificării UTF-8
    1. Probleme înainte de introducerea UTF-8
    2. Crearea UTF-8
  2. UTF-8 în setul de caractere Unicode: un standard pentru toate limbile
    1. Alternativele: UTF-32 și UTF-16
    2. Eficient și scalabil: UTF-8
  3. Noțiuni de bază: codare și compoziție UTF-8
  4. Conversia hexagonală Unicode în binar UTF-8
  5. UTF-8 în editor
  6. Concluzie: codificarea UTF-8 îmbunătățește comunicarea internațională

Evoluția codificării UTF-8

UTF-8 este o codificare a caracterelor. Atribuie exact o anumită secvență de biți fiecărui caracter Unicode existent, care poate fi citită și ca număr binar. Asta înseamnă: UTF-8 atribuie un număr binar fix tuturor literelor, numerelor și simbolurilor într-un număr tot mai mare de limbi. Organizațiile internaționale pentru care standardele de internet sunt importante și pe care doresc să le stabilească în consecință lucrează la transformarea UTF-8 în forța incontestabilă în codificare. Printre alte lucruri care W3C la fel de bine ca Task Force Inginerie Internet ridică-te pentru asta. De fapt, încă din 2009, majoritatea site-urilor web din lume foloseau codarea UTF-8. În martie 2018, potrivit unui raport W3Techs, 90,9% din toate site-urile web existente au folosit această codificare a caracterelor.

Probleme înainte de introducerea UTF-8

Diferite regiuni cu limbi și sisteme de scriere conexe au fiecare ale lor standarde proprii de codificare dezvoltate pentru că aveau nevoi diferite. În lumea de limbă engleză, de exemplu, codificarea ASCII a fost suficientă, a cărei structură permite alocarea a 128 de caractere unui șir de caractere citibil de computer. Cu toate acestea, fonturile asiatice sau alfabetul chirilic folosesc caractere individuale mai unice. Umlauturile germane (cum ar fi litera ä) lipsesc și în ASCII. În plus, atribuirea diferitelor coduri ar putea fi duplicate. Ca rezultat, de exemplu, un document scris în limba rusă a fost afișat pe un computer american folosind literele latine atribuite acestui sistem în loc de literele chirilice. Rătăcirea rezultată a îngreunat comunicarea internațională considerabil.

Crearea UTF-8

Pentru a rezolva această problemă, Joseph D. Becker a dezvoltat setul de caractere universal Unicode pentru Xerox între 1988 și 1991. Din 1992 a existat și consorțiul din industria IT X/Deschis căutând un sistem care să înlocuiască ASCII și să extindă repertoriul personajelor. Cu toate acestea, codarea ar trebui să rămână compatibilă cu ASCII. Această cerință nu a fost îndeplinită de prima codare numită UCS-2, care pur și simplu a transferat numerele de caractere în valori pe 16 biți. UTF-1 a eșuat, de asemenea, deoarece atribuțiile Unicode s-au ciocnit parțial cu atribuțiile existente de caractere ASCII. Un server care a fost setat la ASCII produce uneori caractere incorecte. Aceasta a fost o problemă semnificativă, deoarece majoritatea computerelor vorbitoare de limbă engleză lucrau cu el în acel moment. Următoarea mișcare a fost în Sistem de fișiere format de transformare UCS sigur (FSS-UTF) din Dave Prosser, care a eliminat suprapunerea cu caractere ASCII.

În luna august a aceluiași an, proiectul a făcut turul în cercurile profesionale. Cofondatorii Unix au lucrat în Bell Labs, cunoscuți pentru numeroși câștigători ai Premiului Nobel Ken Thompson și Rob Pike la planul sistemului de operare 9. Au preluat ideea lui Prosser, au dezvoltat o codificare auto-sincronizată (fiecare caracter indică câte biți are nevoie) și au stabilit reguli pentru atribuirea literelor care ar putea fi reprezentate diferit în cod (exemplu: "ä „Ca simbol separat sau„ a + ¨ ”). Au folosit cu succes codificarea pentru sistemul lor de operare și l-au prezentat celor responsabili. Cu aceasta, FSS-UTF, cunoscut astăzi sub numele de "UTF-8", a fost în esență complet.

UTF-8 este o codificare de caractere pe 8 biți pentru Unicode. Abrevierea „UTF-8” înseamnă „8-Bit Universal Character Set Transformation Format”, în engleză: „Universal 8-Bit Character Set Transformation Format”. Unul până la patru octeți, fiecare format din opt biți, alcătuiește un număr binar citibil de computer. Aceasta atribuie codarea unui caracter de limbă sau unui alt element de text. Structura de autosincronizare și potențialul de a genera 2 21 de numere binare permit atribuirea inconfundabilă a fiecărei singure limbi și elemente de text din toate limbile din lume.

UTF-8 în setul de caractere Unicode: un standard pentru toate limbile

Codificarea UTF-8 este un format de transformare în cadrul standardului Unicode. Standardul internațional ISO 10646 definește Unicode, acolo sub denumirea „Universal Coded Character Set”, în mare măsură. Dezvoltatorii Unicode limitează anumiți parametri pentru utilizare practică. Standardul este destinat să asigure codificarea uniformă și compatibilă la nivel internațional a caracterelor și a elementelor de text. Când Unicode a fost introdus în 1991, acesta a definit 24 de sisteme moderne de scriere și simboluri valutare pentru prelucrarea datelor. În iunie 2017 erau 139.

Există diverse formate de transformare Unicode, sau „UTF” pe scurt, care sunt 1.114.112 posibile Puncte de cod reproduce. Au prevalat trei formate: UTF-8, UTF-16 și UTF-32. Alte codificări precum UTF-7 sau SCSU au și ele avantajele lor, dar încă nu s-au stabilit.

Unicode este împărțit în 17 niveluri, fiecare cuprinzând 65.536 de caractere. Un nivel este format din 16 coloane și 16 rânduri. Primul nivel, „Plan de bază multilingv " (Nivelul 0) cuprinde o mare parte a sistemelor de scriere utilizate în prezent în lume, precum și semne de punctuație, semne de control și simboluri. În prezent sunt utilizate încă cinci niveluri:

  • Plan multilingv suplimentar (nivelul 1): sisteme de scriere istorice, caractere rare folosite
  • Planul ideografic suplimentar (nivelul 2): ​​caractere rare CJK („chineză, japoneză, coreeană”)
  • Plan suplimentar special (nivel 14): caractere individuale de control
  • Zona de utilizare privată suplimentară - A (nivelul 15): utilizare privată
  • Zona de utilizare privată suplimentară - B (nivelul 16): utilizare privată

Codurile UTF permit accesul la toate caracterele Unicode. Proprietățile respective sunt recomandate pentru anumite domenii de aplicare.

Alternativele: UTF-32 și UTF-16

UTF-32 funcționează întotdeauna cu 32 de biți, adică 4 octeți. Structura simplă crește lizibilitatea formatului. În limbile care utilizează în principal alfabetul latin și deci doar primele 128 de caractere, codarea ocupă mult mai multă memorie decât este necesar (4 în loc de 1 octet).

UTF-16 s-a impus ca format de afișare în sisteme de operare precum Apple macOS și Microsoft Windows. Este, de asemenea, utilizat în multe cadre de dezvoltare software. Este unul dintre cele mai vechi UTF-uri încă în uz. Structura sa este deosebit de potrivită pentru codificarea de memorie a caracterelor care nu sunt în limbă latină. Cele mai multe caractere pot fi reprezentate în 2 octeți (16 biți), numai cu caractere rare lungimea se dublează până la 4 octeți.

Eficient și scalabil: UTF-8

UTF-8 constă din până la patru șiruri de biți, fiecare format din 8 biți. Predecesorul ASCII cu toate acestea, constă dintr-un lanț de biți cu 7 biți. Ambele codări conțin primele 128 de caractere codate congruente cu fermitate. Personajele, care provin în principal din lumea vorbitoare de limbă engleză, sunt acoperite fiecare de câte un octet. Pentru limbile cu alfabet latin, acest format folosește memoria cel mai eficient. Sistemele de operare Unix și Linux îl utilizează intern, însă UTF-8 își joacă cel mai important rol în legătură cu Aplicații Internet, și anume atunci când se afișează text pe World Wide Web sau în e-mailuri.

mulțumită structura de autosincronizare lizibilitatea este menținută în ciuda lungimii variabile pe caracter. Fără restricții Unicode, UTF-8 (= 4.398.046.511.104) ar permite atribuirea de caractere. Datorită limitării de 4 octeți în Unicode, este efectiv 2 21, ceea ce este mai mult decât suficient. Chiar și zona Unicode are încă nivele goale pentru multe alte sisteme de scriere. Sarcina exactă previne suprapunerile punctelor de cod, care a restricționat comunicarea în trecut. În timp ce UTF-16 și UTF-32 permit, de asemenea, o atribuire precisă, UTF-8 folosește spațiul de memorie din sistemul de scriere latină în mod deosebit de eficient și este proiectat astfel încât diferite sisteme de scriere să poată coexista și să fie acoperite fără probleme. Acest lucru permite afișarea lor simultană și semnificativă într-un câmp text fără probleme de compatibilitate.

Noțiuni de bază: codificare și compoziție UTF-8

Codificarea UTF-8 impresionează, pe de o parte, prin compatibilitatea cu ASCII și, pe de altă parte, cu o structură de auto-sincronizare care face mai ușor pentru dezvoltatori să identifice apoi sursele de eroare. Pentru toti Caractere ASCII utilizează UTF doar 1 octet. Numărul total de șiruri de biți poate fi văzut din primele cifre ale numărului binar. Deoarece codul ASCII are doar 7 biți, prima cifră este Codul 0. 0 umple spațiul de memorie la un octet complet și semnalează începutul unui Lanț fără lanțuri de urmărire. De exemplu, numele „UTF-8” ar fi exprimat ca un număr binar codificat în UTF-8 după cum urmează:

01010101

01010100

01000110

00101101

00111000

Codificarea UTF-8 atribuie caractere ASCII ca cele utilizate în tabel unui singur șir de biți. Toate caracterele și simbolurile următoare din Unicode au două până la patru șiruri de 8 biți. Primul lanț se numește Începeți octetul, lanțuri suplimentare sunt Urmăriți octeți. Începeți octeții cu octeți de continuare începe întotdeauna cu 11. Octecții de continuare, totuși, începeți întotdeauna cu 10. Dacă căutați manual un anumit punct din cod, veți recunoaște începutul unui caracter codat de markerii 0 și 11. -Caracterul octet este semnul exclamării inverse:

11000010 10100001

Codarea prefixului împiedică codificarea unui alt caracter într-un lanț de octeți. Dacă un flux de octeți începe în mijlocul unui document, computerul va afișa în continuare corect caracterele lizibile, deoarece nici măcar nu va mapa caractere incomplete. Dacă sunteți în căutarea pentru începutul unui caracter, limita de 4 octeți înseamnă că trebuie să vă întoarceți maximum trei lanțuri de octeți în orice moment pentru a găsi octetul de început.

Un alt element de structurare: numărul celor la începutul octetului de start marchează Lungimea lanțului de octeți. După cum se arată mai sus, 110xxxxx reprezintă 2 octeți. 1110xxxx înseamnă 3 octeți, 11110xxx pentru 4 octeți. În Unicode, valoarea octetului atribuit corespunde numărului de caractere, care permite ordonarea lexicală. Cu toate acestea, există lacune. Zona Unicode U + 007F până la U + 009F include numere de control neatribuite. Standardul UTF-8 nu atribuie niciun caracter imprimabil acolo, ci doar comenzi.

Așa cum am menționat, codarea UTF-8 poate în mod teoretic să coadă până la opt lanțuri de octeți. Cu toate acestea, Unicode stipulează o lungime maximă de 4 octeți. Pe de o parte, aceasta are consecința că lanțurile de octeți cu 5 octeți sau mai mult sunt nevalide în mod implicit. Pe de altă parte, această restricție reflectă efortul de a codifica cât mai mult posibil compact - Deci, cu puțină utilizare a memoriei - și dacă este posibil structurat Hartă. O regulă de bază atunci când se utilizează UTF-8 este că codificarea cea mai scurtă posibilă ar trebui folosit. De exemplu, litera ä este codificată folosind 2 octeți: 11000011 10100100. Teoretic, este posibilă combinarea punctelor de cod pentru litera a (01100001) și simbolul diarezei ¨ (11001100 10001000) pentru a reprezenta ä: 01100001 11001100 10001000. Acest formular Cu toate acestea, UTF-8 este considerat a fi o codare prea lungă și, prin urmare, nu este permisă.

Această regulă este motivul pentru care secvențele de octeți care încep cu 192 și 193 nu sunt permise. Acest lucru se datorează faptului că pot reprezenta caractere din gama ASCII (0-127) cu 2 octeți care sunt deja codați cu 1 octeți.

Unele intervale de valori Unicode nu au fost definite pentru UTF-8 deoarece sunt disponibile pentru surogatele UTF-16. Prezentarea generală arată ce octeți din UTF-8 sub Unicode conform Internet Engineering Task Force (IETF) ca admisibil se aplică (zonele marcate cu verde sunt octeți validi, zonele marcate cu roșu sunt nevalide).

Conversia hexagonală Unicode în binar UTF-8

Computerele citesc doar numere binare, oamenii folosesc un sistem zecimal. O interfață între aceste forme este aceea Sistem hexazecimal. Ajută la afișarea lanțurilor lungi de biți într-un mod compact. Folosește cifrele de la 0 la 9 și literele de la A la F și acționează pe baza numărului 16. Ca a patra putere din 2, sistemul hexazecimal este mai potrivit decât sistemul zecimal pentru reprezentarea intervalelor de octeți de opt cifre. O cifră hexazecimală înseamnă un șir de patru („ronțăit”) în octet. Prin urmare, un octet cu opt cifre binare poate fi reprezentat doar cu două cifre hexazecimale. Unicode utilizează sistemul hexazecimal pentru Poziția unui personaj a descrie în cadrul propriului sistem. Din aceasta se poate calcula numărul binar și în final punctul de cod UTF-8.

În primul rând, numărul binar trebuie convertit din numărul hexazecimal. Apoi introduceți punctele de cod în structura codării UTF-8. Utilizați următoarele pentru a facilita structurarea Prezentare generală, care arată câte puncte de cod se încadrează într-un lanț de octeți și ce structură vă puteți aștepta în ce interval de valori Unicode.