Imath wiki - prezentarea informațiilor de text

Ne-am ocupat deja de codificarea numerelor întregi și a numerelor reale - ambele sunt prezentate ca un cod binar. Ar fi ciudat să ne așteptăm la ceva diferit de informațiile textuale.







Textul este codificat după caracter. adică fiecare personaj este codificat într-un mod neclar, iar textul este o serie de caractere.

Numărul de biți alocate unui caracter și, de fapt, corespondența unui anumit cod cu un anumit simbol se numește codificare.

reguli de codificare care specifică o mapare a unui set finit de caractere ale alfabetului (de obicei elemente de text: litere, cifre, semne de punctuație) și lungimea secvenței în una sau mai multe caractere ale unui alt alfabet (puncte și linii în Morze steaguri de semnal de cod din flota, de unu și zerouri (biți ) în computer).

Codificările pot avea o rată de biți fixă ​​diferită. și anume aloca un număr cunoscut de biți pentru codarea unui caracter, dar poate avea o rată de biți variabilă.

Codul american standard pentru schimbul de informații - codul standard american de schimb de informații.

Dezvoltat în 1963, și în unele forme este încă folosit.

ASCII este, de fapt, o codificare pe șapte biti, dar acum fiecare caracter este stocat în 8 biți, iar bitul de înaltă ordine este întotdeauna setat la 0.

În total, ASCII poate fi reprezentat, după cum probabil ați ghicit, 128 de caractere. Acestea includ: 32 caractere de control, numere, semne de punctuație și simboluri matematice, litere mari și mici din alfabetul latin, cifre arabe.

În prezent, multe dintre caracterele de control sunt rareori utilizate. Cel mai frecvent utilizat:

  • 0, 016. NUL, \ 0 - caracter zero, utilizat în multe limbi de programare ca marker de sfârșit de linie.
  • 4, 416. EOT este "sfârșitul transmiterii". Este utilizat în anumite sisteme (în special compatibile cu Unix) ca marcator de intrare la sfârșitul intrării.
  • 7, 716. BEL, \ a - dispozitivul de recepție trimite un semnal către utilizator (de obicei o scânteie)
  • 8, 816. BS, \ b - se utilizează fie pentru a șterge ultimul caracter, fie pentru a imprima "peste" acesta.
  • 9, 916. HT, \ t - fila orizontală, utilizată pentru a alinia liniile
  • 10, A16. LF, \ n - "ruperea liniei", marcatorul de sfârșit de linie în variantele Unix
  • 11, B16. VT, \ v - tabulare verticală
  • 12, C16. FF, \ f - șterge ecranul terminalului sau, când imprimă, pagina curentă
  • 13, D16. CR, \ r - "carriage return" - mută cursorul la începutul liniei. Folosit ca marcator de sfârșit de linie în Mac OS. \ r \ n este folosit ca marcator de sfârșit de linie în Windows.
  • 27, 1B16. ESC - "Escape", este folosit pentru a introduce comenzi pentru controlul terminalului.
  • 127, 7F16. DEL - în unele sisteme este folosit pentru a șterge un caracter.






Folosind 8 biți pentru a stoca caractere ASCII pe 7 biți vă permite să completați codarea ASCII cu alfabete naționale, setând bitul de înaltă ordine la 1.

Pentru limba rusă, următoarele codificări au devenit pe scară largă:

  • CP866 - utilizat pe scară largă în MS-DOS
  • KOI8-R - a fost utilizat pe scară largă în Unix-like OS (Linux, BSD)
  • CP1251 - Utilizată pe scară largă (și parțial folosită până acum) de sistemul de operare al familiei Windows.

Descriptiv, CP866, cu excepția litere rusești, conține caractere Pseudographic, KOI8-R este construit în așa fel încât în ​​terminalele care acceptă doar șapte biți ASCII textul rusesc transformat într-o transliterare cu registru inversat (cu majuscule devin mici și mici - mari) și CP1251 conține aproape toate simbolurile tipografice și, cu excepția rușilor, includ simbolurile ucrainene și bieloruse.

Aproximativ simultan cu UCS a apărut standardul Unicode, au folosit 16 biți pentru codificarea caracterelor.

Ca urmare a evoluției ulterioare, UCS și Unicode au început să fie dezvoltate în comun. Până în prezent, există trei codificări comune:

Suportul pentru UTF-32 nu este implementat peste tot. În ciuda faptului că sunt utilizați 32 de biți, cei mai tineri sunt de fapt semnificativi 31. Maximul teoretic este de 2.147.483.647 de caractere. Practic, standardul actual permite doar 1.114.111 de coduri diferite, deși în viitor acest interval poate fi extins. UTF-32 este o codificare cu lungime fixă.

UTF-16 implementează suport pentru toate simbolurile majore ale limbilor moderne, plus multe simboluri speciale, cum ar fi simbolurile matematice, secvențele de evacuare, diacriticele și altele. Simbolul este codificat de una sau două "cuvinte" de 16 biți. Sunt posibile în total 1 112 064 de coduri diferite. În implementările vechi, funcționează doar codurile dintr-un "cuvânt".

UTF-8, codificat de unul sau mai multe octeți (8 biți fiecare) și este compatibil înapoi cu ASCII. În prezent, UTF-8 este cea mai populară codificare universală: marea majoritate a OS-urilor de tip Unix și marea majoritate a paginilor Web o utilizează.

Codarea UTF-8 ca codificare de lungime variabilă

În UTF-8, caracterele sunt codate după cum urmează:

  1. Dacă un cod ASCII este codificat, bitul ridicat este setat la 0, iar restul de 7 biți reprezintă codul caracterului ASCII.
  2. În caz contrar, primele 8 biți conțin n unități, unde n este numărul de octeți din simbolul codificat (adică cel puțin 2 unități), urmat de 0. Bitii rămași reprezintă o parte a codului caracterului.
  3. Următoarele blocuri de 8 biți încep la 10 (cel mai mare bit este setat la 1, următorul bit la 0), iar biții rămași reprezintă o parte a codului caracterului.

Lungimea maximă a codului de caractere din UTF-8 este de 6 octeți. Minimul este de 1 octet.

Astfel, din punct de vedere tehnic, UTF-8 poate codifica orice secvență de UTF-32.

Trebuie menționat faptul că versiunea curentă a standardului Unicode 6 presupune un cod maxim de 10FFFF16. pentru codare care în UTF-8 este de ajuns 4 octeți.

Teoretic, este posibil să codificați mai mult de 31 de biți în UTF-8, dar acum nu este folosit. Cu toate acestea, dacă primii 8 biți sunt setați la 1, atunci următorii 8 biți pot fi de asemenea interpretați ca numărul de octeți din cod.







Trimiteți-le prietenilor: