Cod 39 set complet de caractere ASCII. Codificarea informațiilor text

Bună ziua, dragi cititori ai site-ului blogului. Astăzi vă vom vorbi despre de unde provin krakozyabr-urile pe un site web și în programe, ce codificări de text există și care ar trebui folosite. Să aruncăm o privire mai atentă asupra istoriei dezvoltării lor, pornind de la ASCII de bază, precum și versiunile sale extinse CP866, KOI8-R, Windows 1251 și terminând cu codificări moderne Unicode Consortium UTF 16 și 8.

Pentru unii, această informație poate părea inutilă, dar știți câte întrebări primesc în mod specific cu privire la krakozyabrs (setul de caractere imposibil de citit). Acum voi avea ocazia să trimit tuturor la textul acestui articol și să-mi găsesc propriile greșeli. Ei bine, pregătiți-vă să absorbiți informațiile și încercați să urmăriți fluxul poveștii.

ASCII - codificarea de bază a textului pentru alfabetul latin

Dezvoltarea codificărilor de text a avut loc concomitent cu formarea industriei IT, iar în acest timp au reușit să sufere destul de multe schimbări. Din punct de vedere istoric, totul a început cu EBCDIC, care era destul de disonantă în pronunția rusă, ceea ce a făcut posibilă codificarea literelor alfabetului latin, a cifrelor arabe și a semnelor de punctuație cu caractere de control.

Dar totuși, punctul de plecare pentru dezvoltarea codificărilor moderne de text ar trebui considerat celebrul ASCII(Codul standard american pentru schimbul de informații, care în rusă este de obicei pronunțat „aski”). Descrie primele 128 de caractere utilizate cel mai frecvent de utilizatorii vorbitori de limba engleză - litere latine, cifre arabe și semne de punctuație.

Aceste 128 de caractere descrise în ASCII au inclus și unele caractere de serviciu, cum ar fi paranteze, semne hash, asteriscuri etc. De fapt, le puteți vedea singur:

Aceste 128 de caractere din versiunea originală ASCII au devenit standardul, iar în orice altă codificare le veți găsi cu siguranță și vor apărea în această ordine.

Dar adevărul este că cu un octet de informații puteți codifica nu 128, ci până la 256 de valori diferite (două la puterea lui opt este egală cu 256), așa că după versiunea de bază a Asuka o serie întreagă de codificări ASCII extinse, în care, pe lângă 128 de caractere de bază, a fost posibilă și codificarea simbolurilor codificării naționale (de exemplu, rusă).

Aici, probabil că merită să spunem puțin mai multe despre sistemele de numere care sunt utilizate în descriere. În primul rând, după cum știți cu toții, un computer funcționează doar cu numere în sistemul binar, și anume cu zerouri și unu („algebră booleană”, dacă cineva l-a luat la un institut sau la școală). , fiecare dintre acestea fiind un doi la putere, începând de la zero și până la doi până la a șaptea:

Nu este greu de înțeles că toate combinațiile posibile de zerouri și unu într-un astfel de design pot fi doar 256. Convertirea unui număr din sistemul binar în sistemul zecimal este destul de simplă. Trebuie doar să aduni toate puterile a doi cu una deasupra lor.

În exemplul nostru, acesta se dovedește a fi 1 (2 la puterea lui zero) plus 8 (două la puterea lui 3), plus 32 (două la puterea a cincea), plus 64 (la puterea a șasea), plus 128 (la puterea a saptea). Totalul este 233 în notație zecimală. După cum puteți vedea, totul este foarte simplu.

Dar dacă te uiți îndeaproape la tabelul cu caractere ASCII, vei vedea că acestea sunt reprezentate în codificare hexazecimală. De exemplu, „asteriscul” corespunde numărului hexazecimal 2A din Aski. Probabil știți că în sistemul numeric hexazecimal, pe lângă cifrele arabe, sunt folosite și litere latine de la A (înseamnă zece) la F (înseamnă cincisprezece).

Ei bine, atunci, pentru conversia unui număr binar în hexazecimal recurge la următoarea metodă simplă și evidentă. Fiecare octet de informații este împărțit în două părți de patru biți, așa cum se arată în captura de ecran de mai sus. Acea. În fiecare jumătate de octet, doar șaisprezece valori (de la două până la a patra putere) pot fi codificate în binar, care poate fi ușor reprezentat ca un număr hexazecimal.

Mai mult, în jumătatea stângă a octetului, gradele vor trebui să fie numărate din nou începând de la zero și nu așa cum se arată în captura de ecran. Drept urmare, prin calcule simple, obținem că numărul E9 este codificat în captură de ecran. Sper că cursul raționamentului meu și soluția acestui puzzle v-au fost clare. Ei bine, acum să continuăm, de fapt, să vorbim despre codificări de text.

Versiuni extinse de Asuka - codificări CP866 și KOI8-R cu pseudografice

Așadar, am început să vorbim despre ASCII, care a fost, parcă, punctul de plecare pentru dezvoltarea tuturor codificărilor moderne (Windows 1251, Unicode, UTF 8).

Inițial, conținea doar 128 de caractere din alfabetul latin, cifre arabe și altceva, dar în versiunea extinsă a devenit posibilă utilizarea tuturor celor 256 de valori care pot fi codificate într-un octet de informații. Acestea. A devenit posibil să adăugați simboluri ale literelor din limba dvs. la Aski.

Aici va trebui să ne abatem din nou pentru a explica - de ce avem nevoie de codificări? texte și de ce este atât de important. Caracterele de pe ecranul computerului sunt formate pe baza a două lucruri - seturi de forme vectoriale (reprezentări) ale diferitelor caractere (sunt localizate în fișiere cu ) și cod care vă permite să scoateți din acest set de forme vectoriale (fișier cu fonturi). ) exact caracterul care va trebui introdus în Locul corect.

Este clar că fonturile în sine sunt responsabile pentru formele vectoriale, dar sistemul de operare și programele utilizate în el sunt responsabile pentru codificare. Acestea. orice text de pe computer va fi un set de octeți, fiecare dintre care codifică un singur caracter al acestui text.

Programul care afișează acest text pe ecran (editor de text, browser etc.), atunci când analizează codul, citește codificarea următorului caracter și caută forma vectorială corespunzătoare în fișierul de font necesar, care este conectat pentru a afișa acest text. document text. Totul este simplu și banal.

Aceasta înseamnă că pentru a codifica orice caracter de care avem nevoie (de exemplu, din alfabetul național), trebuie îndeplinite două condiții - forma vectorială a acestui caracter trebuie să fie în fontul folosit și acest caracter ar putea fi codificat în codificări ASCII extinse în un octet. Prin urmare, există o mulțime de astfel de opțiuni. Doar pentru codificarea caracterelor în limba rusă, există mai multe varietăți de Aska extins.

De exemplu, a apărut inițial CP866, care avea capacitatea de a folosi caractere din alfabetul rus și era o versiune extinsă a ASCII.

Acestea. partea superioară a coincis complet cu versiunea de bază a Aska (128 de caractere latine, numere și alte prostii), care este prezentată în captura de ecran de mai sus, dar partea inferioară a tabelului cu codificare CP866 avea aspectul indicat în captura de ecran de mai jos. și v-a permis să codificați alte 128 de semne (litere rusești și tot felul de pseudografice):

Vedeți, în coloana din dreapta numerele încep cu 8, pentru că... numerele de la 0 la 7 se referă la partea de bază a ASCII (vezi prima captură de ecran). Acea. Litera rusă „M” din CP866 va avea codul 9C (se află la intersecția rândului corespunzător cu 9 și a coloanei cu numărul C în sistemul numeric hexazecimal), care poate fi scris într-un octet de informații și dacă există un font potrivit cu caractere rusești, această scrisoare fără probleme va apărea în text.

De unde aceasta suma? pseudografic în CP866? Ideea este că această codificare pentru textul rusesc a fost dezvoltată în acei ani greșiți, când sistemele de operare grafică nu erau atât de răspândite ca acum. Și în Dosa și sisteme de operare cu text similare, pseudografica a făcut posibilă cel puțin diversificarea designului textelor și, prin urmare, CP866 și toți ceilalți colegi din categoria versiunilor extinse ale Asuka abundă în el.

CP866 a fost distribuit de IBM, dar în plus, au fost dezvoltate o serie de codificări pentru caracterele în limba rusă, de exemplu, același tip (ASCII extins) poate fi atribuit KOI8-R:

Principiul funcționării sale rămâne același cu cel al CP866 descris puțin mai devreme - fiecare caracter al textului este codificat de un singur octet. Captura de ecran arată a doua jumătate a tabelului KOI8-R, deoarece prima jumătate este complet în concordanță cu Asuka de bază, care este afișată în prima captură de ecran din acest articol.

Printre caracteristicile codificării KOI8-R, se poate remarca faptul că literele rusești din tabelul său nu sunt în ordine alfabetică, așa cum, de exemplu, au făcut-o în CP866.

Dacă vă uitați la prima captură de ecran (a părții de bază, care este inclusă în toate codificările extinse), veți observa că în KOI8-R literele rusești sunt situate în aceleași celule ale tabelului ca și literele corespunzătoare ale alfabetului latin din prima parte a tabelului. Acest lucru a fost făcut pentru comoditatea trecerii de la caracterele rusești la caractere latine, eliminând doar un bit (două la a șaptea putere sau 128).

Windows 1251 - versiunea modernă de ASCII și de ce apar fisurile

Dezvoltarea în continuare a codificărilor de text s-a datorat faptului că sistemele de operare grafică câștigau popularitate și nevoia de a folosi pseudografice în ele a dispărut în timp. Ca urmare, a apărut un întreg grup care, în esență, erau încă versiuni extinse ale Asuka (un caracter al textului este codificat cu doar un octet de informații), dar fără utilizarea simbolurilor pseudografice.

Ele aparțineau așa-numitelor codificări ANSI, care au fost dezvoltate de Institutul American de Standarde. În limbajul comun, numele chirilic a fost folosit și pentru versiunea cu suport pentru limba rusă. Un exemplu în acest sens ar fi.

S-a diferențiat în mod favorabil de CP866 și KOI8-R utilizate anterior prin faptul că locul simbolurilor pseudografice în el a fost luat de simbolurile lipsă ale tipografiei ruse (cu excepția semnului de accent), precum și de simbolurile utilizate în limbile slave apropiate de Rusă (ucraineană, belarusă etc.):

Datorită unei asemenea abundențe de codificări în limba rusă, producătorii de fonturi și producătorii de software au avut în mod constant dureri de cap, iar tu și cu mine, dragi cititori, am avut adesea aceleași notorii. krakozyabry când a existat confuzie cu versiunea folosită în text.

Foarte des au ieșit la iveală la trimiterea și primirea mesajelor prin e-mail, ceea ce a presupus crearea unor tabele de conversie foarte complexe, care, de fapt, nu puteau rezolva această problemă în mod fundamental, iar utilizatorii foloseau adesea pentru corespondență pentru a evita trucurile notorii atunci când foloseau Codificări rusești precum CP866, KOI8-R sau Windows 1251.

De fapt, fisurile apărute în locul textului rusesc au fost rezultatul utilizării incorecte a codificării acestei limbi, care nu corespundea celei în care a fost codificat inițial mesajul text.

Să presupunem că, dacă încercați să afișați caractere codificate folosind CP866 utilizând tabelul de coduri Windows 1251, atunci vor apărea aceleași farfurii (un set de caractere fără sens), înlocuind complet textul mesajului.

O situație similară apare foarte des în forumuri sau bloguri, când textul cu caractere rusești este salvat din greșeală în codificarea greșită, care este folosită implicit pe site, sau în editorul de text greșit, care adaugă la coduri gaguri care nu sunt vizibile pentru cu ochiul liber.

În cele din urmă, mulți oameni s-au săturat de această situație cu o mulțime de codificări și încontinuu porcării, iar premisele au apărut pentru crearea unei noi variante universale care să le înlocuiască pe toate pe cele existente și să rezolve în sfârșit problema cu aspectul. a textelor ilizibile. În plus, a fost problema limbilor precum chineza, unde erau mult mai multe caractere de limbă decât 256.

Unicode - codificări universale UTF 8, 16 și 32

Aceste mii de caractere ale grupului de limbi din Asia de Sud-Est nu au putut fi descrise într-un octet de informații care au fost alocate pentru codificarea caracterelor în versiunile extinse de ASCII. Ca urmare, a fost creat un consorțiu numit Unicode(Unicode - Unicode Consortium) cu colaborarea multor lideri din industria IT (cei care produc software, care codifică hardware, care creează fonturi), care au fost interesați de apariția unei codări universale de text.

Prima variantă lansată sub auspiciile Consorțiului Unicode a fost UTF 32. Numărul din numele de codificare înseamnă numărul de biți care sunt utilizați pentru a codifica un caracter. 32 de biți echivalează cu 4 octeți de informații care vor fi necesari pentru a codifica un singur caracter în noua codificare UTF universală.

Ca urmare, același fișier cu text codificat în versiunea extinsă a ASCII și în UTF-32, în acest din urmă caz, va avea o dimensiune (greutate) de patru ori mai mare. Acest lucru este rău, dar acum avem posibilitatea de a codifica folosind YTF un număr de caractere egal cu două la puterea de treizeci de secunde ( miliarde de caractere, care va acoperi orice valoare cu adevărat necesară cu o marjă colosală).

Dar multe țări cu limbi ale grupului european nu au avut deloc nevoie să folosească un număr atât de mare de caractere în codificare, cu toate acestea, atunci când foloseau UTF-32, au primit fără niciun motiv o creștere de patru ori a ponderii documentelor text, și, ca urmare, o creștere a volumului de trafic pe Internet și a volumului de date stocate. Este mult și nimeni nu și-ar putea permite o astfel de risipă.

Ca urmare a dezvoltării Unicode, UTF-16, care s-a dovedit a fi atât de reușit încât a fost adoptat implicit ca spațiu de bază pentru toate caracterele pe care le folosim. Folosește doi octeți pentru a codifica un caracter. Să vedem cum arată chestia asta.

În sistemul de operare Windows, puteți urma calea „Start” - „Programe” - „Accesorii” - „Instrumente de sistem” - „Tabel de caractere”. Ca rezultat, se va deschide un tabel cu formele vectoriale ale tuturor fonturilor instalate pe sistemul dumneavoastră. Dacă selectați setul de caractere Unicode în „Opțiuni avansate”, veți putea vedea pentru fiecare font separat întreaga gamă de caractere incluse în acesta.

Apropo, făcând clic pe oricare dintre ele, îi puteți vedea pe doi octeți cod în format UTF-16, format din patru cifre hexazecimale:

Câte caractere pot fi codificate în UTF-16 folosind 16 biți? 65.536 (doi la puterea lui șaisprezece), iar acesta este numărul care a fost adoptat ca spațiu de bază în Unicode. În plus, există modalități de a codifica aproximativ două milioane de caractere folosindu-l, dar acestea au fost limitate la un spațiu extins de un milion de caractere de text.

Dar nici această versiune de succes a codificării Unicode nu a adus prea multe satisfacții celor care au scris, să zicem, programe doar în limba engleză, deoarece pentru ei, după trecerea de la versiunea extinsă a ASCII la UTF-16, greutatea documentelor s-a dublat ( un octet per caracter în Aski și doi octeți pentru același caracter în YUTF-16).

Tocmai pentru a-i satisface pe toți și tot în consorțiul Unicode s-a decis să vină codificare de lungime variabilă. Se numea UTF-8. În ciuda celor opt din nume, are de fapt o lungime variabilă, adică. Fiecare caracter al textului poate fi codificat într-o secvență de la unu până la șase octeți.

În practică, UTF-8 folosește doar intervalul de la unu la patru octeți, deoarece dincolo de patru octeți de cod nu mai este nici măcar posibil teoretic să ne imaginăm ceva. Toate caracterele latine din el sunt codificate într-un octet, la fel ca în vechiul ASCII.

Ceea ce este de remarcat este că, în cazul codificării numai a alfabetului latin, chiar și acele programe care nu înțeleg Unicode vor citi în continuare ceea ce este codificat în YTF-8. Acestea. partea de bază a Asuka a fost pur și simplu transferată la această creație a consorțiului Unicode.

Caracterele chirilice în UTF-8 sunt codificate în doi octeți și, de exemplu, caracterele georgiane sunt codificate în trei octeți. Consorțiul Unicode, după ce a creat UTF 16 și 8, a rezolvat principala problemă - acum avem fonturile au un singur spațiu de cod. Și acum producătorii lor îl pot completa doar cu forme vectoriale de caractere text pe baza punctelor forte și a capacităților lor. Acum vin chiar și în seturi.

În „Tabelul de caractere” de mai sus puteți vedea că diferite fonturi acceptă un număr diferit de caractere. Unele fonturi bogate în Unicode pot fi destul de grele. Dar acum ele diferă nu prin faptul că au fost create pentru diferite codificări, ci prin faptul că producătorul fontului a umplut sau nu complet spațiul unic de cod cu anumite forme vectoriale.

Cuvinte nebunești în loc de litere rusești - cum să o rezolvi

Să vedem acum cum apar krakozyabrurile în loc de text sau, cu alte cuvinte, cum este selectată codificarea corectă pentru textul rusesc. De fapt, este setat în programul în care creați sau editați chiar acest text, sau codați folosind fragmente de text.

Pentru a edita și crea fișiere text, personal folosesc un foarte bun, după părerea mea, . Cu toate acestea, poate evidenția sintaxa a sute de alte limbaje de programare și de marcare și are, de asemenea, capacitatea de a fi extins folosind plugin-uri. Citiți o recenzie detaliată a acestui minunat program la link-ul furnizat.

În meniul de sus al Notepad++ există un element „Codări”, unde veți avea posibilitatea de a converti o opțiune existentă în cea utilizată implicit pe site-ul dvs.:

În cazul unui site pe Joomla 1.5 și versiuni ulterioare, precum și în cazul unui blog pe WordPress, ar trebui să selectați opțiunea pentru a evita apariția fisurilor UTF 8 fără BOM. Care este prefixul BOM?

Faptul este că, atunci când dezvoltau codificarea YUTF-16, dintr-un motiv oarecare au decis să-i atașeze un astfel de lucru precum capacitatea de a scrie codul caracterelor atât în ​​secvență directă (de exemplu, 0A15), cât și invers (150A). . Și pentru ca programele să înțeleagă exact în ce secvență să citească codurile, a fost inventat BOM(Byte Order Mark sau, cu alte cuvinte, semnătură), care a fost exprimată prin adăugarea a trei octeți suplimentari chiar la începutul documentelor.

În codificarea UTF-8, consorțiul Unicode nu prevedea BOM-uri și, prin urmare, adăugarea unei semnături (acei notorii trei octeți suplimentari la începutul documentului) împiedică pur și simplu unele programe să citească codul. Prin urmare, atunci când salvăm fișiere în UTF, trebuie să selectăm întotdeauna opțiunea fără BOM (fără semnătură). Deci ești în avans protejează-te de crakozyabrs care se târăsc.

Ceea ce este de remarcat este că unele programe din Windows nu pot face acest lucru (nu pot salva text în UTF-8 fără BOM), de exemplu, același Windows Notepad notoriu. Salvează documentul în UTF-8, dar încă adaugă semnătura (trei octeți suplimentari) la începutul acestuia. Mai mult, acești octeți vor fi întotdeauna aceiași - citiți codul în secvență directă. Dar pe servere, din cauza acestui mic lucru, poate apărea o problemă - vor ieși escrocii.

Prin urmare, sub nicio formă Nu utilizați notepad Windows obișnuit pentru a edita documente de pe site-ul dvs. dacă nu doriți să apară crăpături. Consider că editorul Notepad++ deja menționat este cea mai bună și mai simplă opțiune, care practic nu are dezavantaje și constă doar în avantaje.

În Notepad++, atunci când selectați o codificare, veți avea opțiunea de a converti textul în codificare UCS-2, care este foarte apropiată de standardul Unicode. De asemenea, în Notepad va fi posibilă codificarea textului în ANSI, adică. în legătură cu limba rusă, acesta va fi Windows 1251, pe care l-am descris deja mai sus.De unde provin aceste informații?

Este înregistrat în registrul sistemului dvs. de operare Windows - ce codificare să alegeți în cazul ANSI, pe care să alegeți în cazul OEM (pentru limba rusă va fi CP866). Dacă instalați o altă limbă implicită pe computer, atunci aceste codificări vor fi înlocuite cu altele similare din categoria ANSI sau OEM pentru aceeași limbă.

După ce salvați documentul în Notepad++ în codificarea de care aveți nevoie sau deschideți documentul de pe site pentru editare, puteți vedea numele acestuia în colțul din dreapta jos al editorului:

Pentru a evita rednecks Pe lângă acțiunile descrise mai sus, va fi util să scrieți informații despre această codificare în antetul codului sursă al tuturor paginilor site-ului, astfel încât să nu existe confuzii pe server sau pe gazda locală.

În general, toate limbajele de marcare hipertext, cu excepția HTML, folosesc o declarație xml specială, care specifică codificarea textului.

Înainte de a analiza codul, browserul știe ce versiune este utilizată și cât de exact trebuie să interpreteze codurile de caractere ale acelei limbi. Dar ceea ce este de remarcat este că, dacă salvați documentul în Unicode implicit, atunci această declarație xml poate fi omisă (codificarea va fi considerată UTF-8 dacă nu există BOM sau UTF-16 dacă există o BOM).

În cazul unui document în limbaj HTML, codificarea este utilizată pentru a indica Element meta, care este scris între etichetele Head de deschidere și de închidere:

... ...

Această intrare este destul de diferită de cea adoptată în, dar este pe deplin compatibilă cu noul standard HTML 5 care este introdus lent și va fi înțeles complet corect de către orice browser utilizat în prezent.

În teorie, ar fi mai bine să plasați un element Meta care indică codificarea documentului HTML cât mai sus posibil în antetul documentului astfel încât în ​​momentul întâlnirii primului caracter din text nu din ANSI de bază (care sunt întotdeauna citite corect și în orice variație), browserul ar trebui să aibă deja informații despre modul de interpretare a codurilor acestor caractere.

Multă baftă! Ne vedem curând pe paginile site-ului blogului

Puteți viziona mai multe videoclipuri accesând
");">

S-ar putea să fiți interesat

Ce sunt adresele URL, cum diferă linkurile absolute și relative pentru un site?
OpenServer - un server local modern și un exemplu de utilizare pentru a instala WordPress pe un computer
Ce este Chmod, ce permisiuni să atribuiți fișierelor și folderelor (777, 755, 666) și cum se face prin PHP
Căutare Yandex după site și magazin online

După cum știți, un computer stochează informații în formă binară, reprezentând-o ca o secvență de unu și zero. Pentru a traduce informațiile într-o formă convenabilă pentru percepția umană, fiecare secvență unică de numere este înlocuită cu simbolul său corespunzător atunci când este afișată.

Unul dintre sistemele de corelare a codurilor binare cu caracterele tipărite și de control este

La nivelul actual de dezvoltare a tehnologiei informatice, utilizatorului nu i se cere să cunoască codul fiecărui personaj specific. Cu toate acestea, o înțelegere generală a modului în care se realizează codificarea este extrem de utilă, iar pentru unele categorii de specialiști, chiar necesară.

Crearea ASCII

Codificarea a fost dezvoltată inițial în 1963 și apoi actualizată de două ori pe parcursul a 25 de ani.

În versiunea originală, tabelul de caractere ASCII includea 128 de caractere; mai târziu a apărut o versiune extinsă, în care au fost salvate primele 128 de caractere, iar caracterele lipsă anterior au fost atribuite codurilor cu al optulea bit implicat.

Timp de mulți ani, această codificare a fost cea mai populară din lume. În 2006, Latin 1252 a ocupat poziția de lider, iar de la sfârșitul lui 2007 până în prezent, Unicode a deținut ferm poziția de lider.

Reprezentarea computerizată a ASCII

Fiecare caracter ASCII are propriul cod, format din 8 caractere reprezentând un zero sau unul. Numărul minim din această reprezentare este zero (opt zerouri în sistemul binar), care este codul primului element din tabel.

Două coduri din tabel au fost rezervate pentru comutarea între standardul US-ASCII și varianta sa națională.

După ce ASCII a început să includă nu 128, ci 256 de caractere, s-a răspândit o variantă de codificare, în care versiunea originală a tabelului a fost stocată în primele 128 de coduri cu al 8-lea bit zero. Caracterele scrise naționale au fost stocate în jumătatea superioară a tabelului (pozițiile 128-255).

Utilizatorul nu trebuie să cunoască direct codurile de caractere ASCII. De obicei, un dezvoltator de software trebuie să cunoască numărul elementului din tabel pentru a-și calcula codul folosind sistemul binar, dacă este necesar.

Limba rusă

După dezvoltarea codificărilor pentru limbile scandinave, chineză, coreeană, greacă etc. la începutul anilor '70, Uniunea Sovietică a început să creeze propria versiune. Curând, a fost dezvoltată o versiune a unei codificări pe 8 biți numită KOI8, păstrând primele 128 de coduri de caractere ASCII și alocând același număr de poziții pentru literele alfabetului național și caractere suplimentare.

Înainte de introducerea Unicode, KOI8 domina segmentul rus al internetului. Au existat opțiuni de codare atât pentru alfabetul rus, cât și pentru cel ucrainean.

Probleme ASCII

Deoarece numărul de elemente chiar și în tabelul extins nu a depășit 256, nu a existat nicio posibilitate de a găzdui mai multe scripturi diferite într-o singură codificare. În anii 90, problema „crocozyabr” a apărut pe Runet, când textele tastate cu caractere ASCII rusești erau afișate incorect.

Problema a fost că diferitele coduri ASCII nu se potriveau între ele. Să ne amintim că diferite caractere ar putea fi localizate în pozițiile 128-255, iar la schimbarea unei codări chirilice cu alta, toate literele textului au fost înlocuite cu altele având un număr identic într-o versiune diferită a codificării.

Starea curenta

Odată cu apariția Unicode, popularitatea ASCII a început să scadă brusc.

Motivul pentru aceasta constă în faptul că noua codificare a făcut posibilă găzduirea caracterelor din aproape toate limbile scrise. În acest caz, primele 128 de caractere ASCII corespund acelorași caractere în Unicode.

În 2000, ASCII era cea mai populară codare de pe Internet și era folosită pe 60% din paginile web indexate de Google. Până în 2012, ponderea acestor pagini a scăzut la 17%, iar Unicode (UTF-8) a luat locul celei mai populare codări.

Astfel, ASCII este o parte importantă a istoriei tehnologiei informației, dar utilizarea sa în viitor pare nepromițătoare.

[Codări pe 8 biți: ASCII, KOI-8R și CP1251] Primele tabele de codificare create în Statele Unite nu au folosit al optulea bit dintr-un octet. Textul a fost reprezentat ca o secvență de octeți, dar al optulea bit nu a fost luat în considerare (a fost folosit în scopuri oficiale).

Tabelul a devenit un standard general acceptat ASCII(Codul American Standard pentru Schimbul de Informații). Primele 32 de caractere ale tabelului ASCII (de la 00 la 1F) au fost folosite pentru caracterele care nu se imprimă. Au fost concepute pentru a controla un dispozitiv de imprimare etc. Restul - de la 20 la 7F - sunt caractere obișnuite (printabile).

Tabelul 1 - Codificare ASCII

DecHexoctCharDescriere
0 0 000 nul
1 1 001 începutul direcției
2 2 002 începutul textului
3 3 003 sfârşitul textului
4 4 004 sfârşitul transmisiei
5 5 005 Anchetă
6 6 006 recunoaște
7 7 007 clopot
8 8 010 backspace
9 9 011 filă orizontală
10 A 012 linie nouă
11 B 013 filă verticală
12 C 014 pagina noua
13 D 015 retur transport
14 E 016 schimbă afară
15 F 017 schimbă în
16 10 020 evadare legaturii de date
17 11 021 controlul dispozitivului 1
18 12 022 controlul dispozitivului 2
19 13 023 controlul dispozitivului 3
20 14 024 controlul dispozitivului 4
21 15 025 recunoaștere negativă
22 16 026 inactiv sincron
23 17 027 sfârşitul trans. bloc
24 18 030 Anulare
25 19 031 sfârşitul mediei
26 1A 032 substitui
27 1B 033 evadare
28 1C 034 separator de fișiere
29 1D 035 separator de grup
30 1E 036 separator de înregistrări
31 1F 037 separator de unitate
32 20 040 spaţiu
33 21 041 !
34 22 042 "
35 23 043 #
36 24 044 $
37 25 045 %
38 26 046 &
39 27 047 "
40 28 050 (
41 29 051 )
42 2A 052 *
43 2B 053 +
44 2C 054 ,
45 2D 055 -
46 2E 056 .
47 2F 057 /
48 30 060 0
49 31 061 1
50 32 062 2
51 33 063 3
52 34 064 4
53 35 065 5
54 36 066 6
55 37 067 7
56 38 070 8
57 39 071 9
58 3A 072 :
59 3B 073 ;
60 3C 074 <
61 3D 075 =
62 3E 076 >
63 3F 077 ?
DecHexoctChar
64 40 100 @
65 41 101 A
66 42 102 B
67 43 103 C
68 44 104 D
69 45 105 E
70 46 106 F
71 47 107 G
72 48 110 H
73 49 111 eu
74 4A 112 J
75 4B 113 K
76 4C 114 L
77 4D 115 M
78 4E 116 N
79 4F 117 O
80 50 120 P
81 51 121 Q
82 52 122 R
83 53 123 S
84 54 124 T
85 55 125 U
86 56 126 V
87 57 127 W
88 58 130 X
89 59 131 Y
90 5A 132 Z
91 5B 133 [
92 5C 134 \
93 5D 135 ]
94 5E 136 ^
95 5F 137 _
96 60 140 `
97 61 141 A
98 62 142 b
99 63 143 c
100 64 144 d
101 65 145 e
102 66 146 f
103 67 147 g
104 68 150 h
105 69 151 i
106 6A 152 j
107 6B 153 k
108 6C 154 l
109 6D 155 m
110 6E 156 n
111 6F 157 o
112 70 160 p
113 71 161 q
114 72 162 r
115 73 163 s
116 74 164 t
117 75 165 u
118 76 166 v
119 77 167 w
120 78 170 X
121 79 171 y
122 7A 172 z
123 7B 173 {
124 7C 174 |
125 7D 175 }
126 7E 176 ~
127 7F 177 DEL

După cum puteți vedea cu ușurință, această codificare conține doar litere latine și cele care sunt folosite în limba engleză. Există, de asemenea, aritmetice și alte simboluri de serviciu. Dar nu există nici litere rusești, nici măcar latine speciale pentru germană sau franceză. Acest lucru este ușor de explicat - codificarea a fost dezvoltată special ca standard american. Pe măsură ce computerele au început să fie folosite în întreaga lume, alte caractere au trebuit să fie codificate.

Pentru a face acest lucru, s-a decis să se folosească al optulea bit din fiecare octet. Acest lucru a făcut să fie disponibile încă 128 de valori (de la 80 la FF) care ar putea fi folosite pentru a codifica caractere. Primul dintre tabelele de opt biți este „ASCII extins” ( ASCII extins) - a inclus diverse variante de caractere latine utilizate în unele limbi ale Europei de Vest. Conținea și alte simboluri suplimentare, inclusiv pseudografice.

Caracterele pseudografice vă permit să oferiți o imagine de grafică afișând doar caractere text pe ecran. De exemplu, programul de gestionare a fișierelor FAR Manager funcționează folosind pseudografice.

Nu existau litere rusești în tabelul ASCII extins. Rusia (fosta URSS) și alte țări și-au creat propriile codificări care au făcut posibilă reprezentarea unor caractere „naționale” specifice în fișiere text pe 8 biți - litere latine ale limbilor poloneză și cehă, chirilice (inclusiv litere rusești) și alte alfabete.

În toate codificările care au devenit răspândite, primele 127 de caractere (adică valoarea octetului cu al optulea bit egal cu 0) sunt aceleași cu ASCII. Deci, un fișier ASCII funcționează în oricare dintre aceste codificări; Literele limbii engleze sunt reprezentate în același mod.

Organizare ISO(International Standardization Organization) a adoptat un grup de standarde ISO 8859. Acesta definește codificări pe 8 biți pentru diferite grupuri de limbi. Deci, ISO 8859-1 este un tabel ASCII extins pentru SUA și Europa de Vest. Și ISO 8859-5 este un tabel pentru alfabetul chirilic (inclusiv rus).

Cu toate acestea, din motive istorice, codarea ISO 8859-5 nu a prins rădăcini. În realitate, pentru limba rusă sunt folosite următoarele codificări:

Pagina de cod 866 ( CP866), alias „DOS”, alias „codare GOST alternativă”. Folosit pe scară largă până la mijlocul anilor 90; folosit acum într-o măsură limitată. Practic nu este folosit pentru distribuirea de texte pe Internet.
- KOI-8. Dezvoltat în anii 70-80. Este un standard general acceptat pentru transmiterea mesajelor de e-mail pe internetul rusesc. De asemenea, este utilizat pe scară largă în sistemele de operare din familia Unix, inclusiv Linux. Se numește versiunea KOI-8, concepută pentru rusă KOI-8R; Există versiuni pentru alte limbi chirilice (de exemplu, KOI8-U este o versiune pentru limba ucraineană).
- Pagina de cod 1251, CP1251,Windows-1251. Dezvoltat de Microsoft pentru a sprijini limba rusă în Windows.

Principalul avantaj al CP866 a fost păstrarea caracterelor pseudo-grafice în aceleași locuri ca în ASCII extins; prin urmare, programele cu text străin, de exemplu, celebrul Norton Commander, ar putea funcționa fără modificări. CP866 este acum utilizat pentru programele Windows care rulează în ferestre text sau în modul text pe ecran complet, inclusiv FAR Manager.

Textele din CP866 au fost destul de rare în ultimii ani (dar este folosit pentru a codifica numele fișierelor rusești în Windows). Prin urmare, ne vom opri mai detaliat asupra altor două codificări - KOI-8R și CP1251.



După cum puteți vedea, în tabelul de codificare CP1251, literele rusești sunt aranjate în ordine alfabetică (cu excepția, însă, a literei E). Acest aranjament facilitează sortarea alfabetică a programelor de calculator.

Dar în KOI-8R ordinea literelor rusești pare aleatorie. Dar de fapt nu este.

În multe programe mai vechi, al 8-lea bit a fost pierdut la procesarea sau transmiterea textului. (Acum, astfel de programe sunt practic „disparute”, dar la sfârșitul anilor 80 - începutul anilor 90 erau răspândite). Pentru a obține o valoare de 7 biți dintr-o valoare de 8 biți, doar scădeți 8 din cifra cea mai semnificativă; de exemplu, E1 devine 61.

Acum comparați KOI-8R cu tabelul ASCII (Tabelul 1). Veți descoperi că literele rusești sunt plasate în corespondență clară cu cele latine. Dacă al optulea bit dispare, literele rusești mici se transformă în litere latine mari, iar literele rusești mari se transformă în litere latine mici. Deci, E1 în KOI-8 este „A” rusesc, în timp ce 61 în ASCII este „a” latin.

Deci, KOI-8 vă permite să mențineți lizibilitatea textului rusesc atunci când al 8-lea bit este pierdut. „Salut tuturor” devine „pRIWET WSEM”.

Recent, atât ordinea alfabetică a caracterelor din tabelul de codificare, cât și lizibilitatea cu pierderea celui de-al 8-lea bit și-au pierdut importanța decisivă. Al optulea bit în computerele moderne nu se pierde în timpul transmisiei sau procesării. Iar sortarea alfabetică se face ținând cont de codificare, și nu prin simpla comparare a codurilor. (Apropo, codurile CP1251 nu sunt complet aranjate alfabetic - litera E nu este la locul ei).

Datorită faptului că există două codificări comune, atunci când lucrați cu Internetul (e-mail, navigarea pe site-uri web), uneori puteți vedea un set de litere fără sens în loc de text rusesc. De exemplu, „EU SUNT SBYUFEMHEL”. Acestea sunt doar cuvintele „cu respect”; dar au fost codificate în codificare CP1251, iar computerul a decodat textul folosind tabelul KOI-8. Dacă aceleași cuvinte, dimpotrivă, ar fi codificate în KOI-8, iar computerul ar decoda textul conform tabelului CP1251, rezultatul ar fi „U HCHBTSEOYEN”.

Uneori se întâmplă ca un computer să descifreze literele în limba rusă folosind un tabel care nu este destinat limbii ruse. Apoi, în locul literelor rusești, apare un set de simboluri fără sens (de exemplu, litere latine ale limbilor est-europene); ele sunt adesea numite „crocozybras”.

În cele mai multe cazuri, programele moderne se ocupă de determinarea în mod independent a codificărilor documentelor de pe Internet (e-mailuri și pagini web). Dar uneori „raușesc”, apoi puteți vedea secvențe ciudate de litere rusești sau „krokozyabry”. De regulă, într-o astfel de situație, pentru a afișa text real pe ecran, este suficient să selectați codarea manual în meniul programului.

Pentru acest articol au fost folosite informații de pe pagina http://open-office.edusite.ru/TextProcessor/p5aa1.html.

Material preluat de pe site:

Suprapunere de caractere

Caracterul BS (backspace) permite imprimantei să imprime un caracter peste altul. ASCII prevedea adăugarea de semne diacritice la litere în acest fel, de exemplu:

  • a BS "→ á
  • a BS ` → à
  • a BS ^ → â
  • o BS / → ø
  • c BS , → ç
  • n BS ~ → с

Notă: în fonturi vechi, apostroful „ a fost desenat înclinat spre stânga, iar tilda ~ a fost deplasată în sus, astfel încât să se potrivească doar cu rolul unui acut și a unei tilde deasupra.

Dacă același caracter este suprapus unui caracter, rezultatul este un efect de font aldine, iar dacă o subliniere este suprapusă unui caracter, rezultatul este text subliniat.

  • a BS a → A
  • aBS_→ A

Notă: Acesta este folosit, de exemplu, în sistemul de ajutor pentru om.

Variante naționale ASCII

Standardul ISO 646 (ECMA-6) prevede posibilitatea de a plasa simboluri naționale @ [ \ ] ^ ` { | } ~ . Pe lângă asta, la fața locului # poate fi postat £ , și pe loc $ - ¤ . Acest sistem este potrivit pentru limbile europene unde sunt necesare doar câteva caractere suplimentare. Versiunea de ASCII fără caractere naționale se numește US-ASCII sau „International Reference Version”.

Ulterior, s-a dovedit a fi mai convenabil să folosești codificări pe 8 biți (pagini de cod), în care jumătatea inferioară a tabelului de coduri (0-127) este ocupată de caractere US-ASCII, iar jumătatea superioară (128-255) prin caractere suplimentare, inclusiv un set de caractere naționale. Astfel, jumătatea superioară a tabelului ASCII, înainte de adoptarea pe scară largă a Unicode, a fost folosită în mod activ pentru a reprezenta caractere localizate, litere ale limbii locale. Lipsa unui standard unificat pentru plasarea caracterelor chirilice în tabelul ASCII a cauzat multe probleme cu codificările (KOI-8, Windows-1251 și altele). Alte limbi cu scripturi non-latine au suferit, de asemenea, de a avea mai multe codificări diferite.

.0 .1 .2 .3 .4 .5 .6 .7 .8 .9 .A .B .C .D .E .F
0. NUL SOM EOA EOM EQT W.R.U. RU CLOPOT BKSP HT LF VT FF CR ASA DE SI.
1. DC 0 DC 1 DC 2 DC 3 DC 4 ERR SINCRONIZARE L.E.M. S 0 S 1 S 2 S 3 S 4 S 5 S 6 S 7
2.
3.
4. GOL ! " # $ % & " ( ) * + , - . /
5. 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
6.
7.
8.
9.
A. @ A B C D E F G H eu J K L M N O
B. P Q R S T U V W X Y Z [ \ ]
C.
D.
E. A b c d e f g h i j k l m n o
F. p q r s t u v w X y z ESC DEL

Pe acele computere în care unitatea minimă de memorie adresabilă a fost un cuvânt de 36 de biți, au fost utilizate inițial caractere de 6 biți (1 cuvânt = 6 caractere). După trecerea la ASCII, astfel de computere au început să conțină fie 5 caractere de șapte biți (1 bit a rămas în plus), fie 4 caractere de nouă biți într-un cuvânt.

Codurile ASCII sunt, de asemenea, folosite pentru a determina ce tastă este apăsată în timpul programării. Pentru o tastatură QWERTY standard, tabelul de coduri arată astfel:

Potrivit Uniunii Internaționale de Telecomunicații, în 2016, trei miliarde și jumătate de oameni au folosit internetul cu o oarecare regularitate. Cei mai mulți dintre ei nici nu se gândesc la faptul că orice mesaje pe care le trimit prin intermediul computerului sau gadgeturilor mobile, precum și textele care sunt afișate pe tot felul de monitoare, sunt de fapt combinații de 0 și 1. Această reprezentare a informațiilor se numește codificare . Acesta asigură și facilitează foarte mult stocarea, prelucrarea și transmiterea acestuia. În 1963, a fost dezvoltată codarea ASCII americană, care face obiectul acestui articol.

Prezentarea informațiilor pe un computer

Din punctul de vedere al oricărui computer electronic, textul este un set de caractere individuale. Acestea includ nu numai litere, inclusiv majuscule, ci și semne de punctuație și numere. În plus, sunt folosite caractere speciale „=”, „&”, „(” și spații.

Setul de caractere care alcătuiesc textul se numește alfabet, iar numărul lor se numește cardinalitate (notat cu N). Pentru a-l determina, se folosește expresia N = 2^b, unde b este numărul de biți sau greutatea informației unui anumit simbol.

S-a dovedit că un alfabet cu o capacitate de 256 de caractere poate reprezenta toate caracterele necesare.

Deoarece 256 reprezintă a 8-a putere a doi, greutatea fiecărui caracter este de 8 biți.

O unitate de măsură de 8 biți se numește 1 octet, deci se obișnuiește să spunem că orice caracter din text stocat pe un computer ocupă un octet de memorie.

Cum se face codarea?

Orice texte sunt introduse în memoria unui computer personal folosind tastele de la tastatură pe care sunt scrise numere, litere, semne de punctuație și alte simboluri. Ele sunt transferate în RAM în cod binar, adică fiecare caracter este asociat cu un cod zecimal cunoscut oamenilor, de la 0 la 255, care corespunde unui cod binar - de la 00000000 la 11111111.

Codificarea caracterelor octet-octet permite procesorului care efectuează procesarea textului să acceseze fiecare caracter individual. În același timp, 256 de caractere sunt destul de suficiente pentru a reprezenta orice informație simbolică.

Codificarea caracterelor ASCII

Această abreviere în engleză înseamnă cod pentru schimbul de informații.

Chiar și în zorii computerizării, a devenit evident că era posibil să se vină cu o mare varietate de modalități de codificare a informațiilor. Cu toate acestea, pentru a transfera informații de la un computer la altul, a fost necesar să se dezvolte un standard unificat. Deci, în 1963, în SUA a apărut tabelul de codificare ASCII. În el, orice simbol al alfabetului computerului este asociat cu numărul său de serie în reprezentare binară. ASCII a fost folosit inițial doar în Statele Unite și mai târziu a devenit un standard internațional pentru computere.

Codurile ASCII sunt împărțite în 2 părți. Doar prima jumătate a acestui tabel este considerată standard internațional. Include caractere cu numere de serie de la 0 (codat ca 00000000) la 127 (codat 01111111).

Număr de serie

Codificarea textului ASCII

Simbol

0000 0000 - 0001 1111

Caracterele cu N de la 0 la 31 se numesc caractere de control. Funcția lor este de a „gestiona” procesul de afișare a textului pe un monitor sau dispozitiv de imprimare, oferirea unui semnal sonor etc.

0010 0000 - 0111 1111

Caractere de la N de la 32 la 127 (partea standard a tabelului) - litere mari și mici ale alfabetului latin, cifrele a zecea, semne de punctuație, precum și diverse paranteze, simboluri comerciale și alte simboluri. Caracterul 32 reprezintă un spațiu.

1000 0000 - 1111 1111

Caracterele cu N de la 128 la 255 (parte alternativă a tabelului sau a paginii de cod) pot avea diferite variante, fiecare având propriul număr. Pagina de coduri este utilizată pentru a specifica alfabetele naționale care sunt diferite de latină. În special, cu ajutorul acestuia se realizează codificarea ASCII pentru caracterele rusești.

În tabel, codificările sunt scrise cu majuscule și se succed în ordine alfabetică, iar numerele sunt în ordine crescătoare. Acest principiu rămâne același pentru alfabetul rus.

Personaje de control

Tabelul de codificare ASCII a fost creat inițial pentru a primi și transmite informații prin intermediul unui dispozitiv care nu a fost folosit de mult timp, cum ar fi un teletype. În acest sens, în setul de caractere au fost incluse caractere neprintabile, folosite ca comenzi pentru controlul acestui dispozitiv. Comenzi similare au fost folosite în astfel de metode de mesagerie pre-computer precum codul Morse etc.

Cel mai comun caracter de teletip este NUL (00). Este folosit și astăzi în majoritatea limbajelor de programare pentru a indica sfârșitul unei linii.

Unde este folosită codarea ASCII?

Codul standard american este necesar nu numai pentru introducerea informațiilor text pe tastatură. Este folosit și în grafică. În special, în ASCII Art Maker, imaginile diferitelor extensii reprezintă un spectru de caractere ASCII.

Există două tipuri de astfel de produse: cele care îndeplinesc funcția de editor grafic prin conversia imaginilor în text și cele care convertesc „desenele” în grafică ASCII. De exemplu, celebra emoticon este un exemplu excelent de simbol de codificare.

ASCII poate fi folosit și la crearea unui document HTML. În acest caz, puteți introduce un anumit set de caractere, iar la vizualizarea paginii va apărea pe ecran un simbol care corespunde acestui cod.

ASCII este, de asemenea, necesar pentru crearea de site-uri web multilingve, deoarece caracterele care nu sunt incluse într-un tabel național specific sunt înlocuite cu coduri ASCII.

Unele caracteristici

ASCII a fost folosit inițial pentru a codifica informațiile text folosind 7 biți (unul a fost lăsat necompletat), dar astăzi funcționează ca 8 biți.

Literele situate în coloanele situate deasupra și dedesubt diferă între ele doar într-un singur bit. Acest lucru reduce semnificativ complexitatea auditului.

Utilizarea ASCII în Microsoft Office

Dacă este necesar, acest tip de codificare a informațiilor text poate fi utilizat în editorii de text Microsoft, cum ar fi Notepad și Office Word. Cu toate acestea, este posibil să nu puteți utiliza unele funcții când introduceți text în acest caz. De exemplu, nu veți putea folosi text îngroșat deoarece codarea ASCII păstrează doar sensul informațiilor, ignorând aspectul și forma generală a acesteia.

Standardizare

Organizația ISO a adoptat standardele ISO 8859. Acest grup definește codificări pe opt biți pentru diferite grupuri de limbi. Mai exact, ISO 8859-1 este un tabel ASCII extins pentru Statele Unite și țările din Europa de Vest. Și ISO 8859-5 este un tabel folosit pentru alfabetul chirilic, inclusiv limba rusă.

Din mai multe motive istorice, standardul ISO 8859-5 a fost folosit pentru o perioadă foarte scurtă de timp.

Pentru limba rusă, în acest moment sunt utilizate următoarele codificări:

  • CP866 (Pagina de cod 866) sau DOS, care este adesea numită codificare GOST alternativă. A fost folosit în mod activ până la mijlocul anilor 90 ai secolului trecut. Momentan practic nu este folosit.
  • KOI-8. Codificarea a fost dezvoltată în anii 1970 și 80 și este în prezent standardul general acceptat pentru mesajele de e-mail pe RuNet. Este utilizat pe scară largă în sistemele de operare Unix, inclusiv Linux. Versiunea „rusă” a KOI-8 se numește KOI-8R. În plus, există versiuni pentru alte limbi chirilice, cum ar fi ucraineană.
  • Pagina de cod 1251 (CP 1251, Windows - 1251). Dezvoltat de Microsoft pentru a oferi suport pentru limba rusă în mediul Windows.

Principalul avantaj al primului standard CP866 a fost păstrarea caracterelor pseudografice în aceleași poziții ca în ASCII extins. Acest lucru a făcut posibilă rularea programelor text fabricate în străinătate, cum ar fi celebrul Norton Commander, fără modificări. În prezent, CP866 este utilizat pentru programele dezvoltate pentru Windows care rulează în modul text pe ecran complet sau în ferestre text, inclusiv FAR Manager.

Textele de computer scrise în codificare CP866 sunt destul de rare în zilele noastre, dar este cea care este folosită pentru numele fișierelor rusești în Windows.

„Unicode”

În acest moment, această codificare este cea mai utilizată. Codurile Unicode sunt împărțite în zone. Primul (U+0000 la U+007F) include caractere ASCII cu coduri. Urmează zonele de caractere ale diferitelor scripturi naționale, precum și semnele de punctuație și simbolurile tehnice. În plus, unele coduri Unicode sunt rezervate în cazul în care este necesar să se includă noi caractere în viitor.

Acum știți că în ASCII, fiecare caracter este reprezentat ca o combinație de 8 zerouri și unu. Pentru nespecialiști, aceste informații pot părea inutile și neinteresante, dar nu vrei să știi ce se întâmplă „în creierul” computerului tău?!