Kako postaviti pametne telefone i računala. Informativni portal
  • Dom
  • OS
  • Tablica upita je dovršena. ASCII kodiranje (Američki standardni kod za razmjenu informacija) - osnovno kodiranje teksta za latinicu

Tablica upita je dovršena. ASCII kodiranje (Američki standardni kod za razmjenu informacija) - osnovno kodiranje teksta za latinicu

Pozdrav, dragi čitatelji bloga. Danas ćemo razgovarati s vama o tome odakle dolaze krakozyabrs na web stranici iu programima, koja kodiranja teksta postoje i koja bi se trebala koristiti. Pogledajmo pobliže povijest njihovog razvoja, počevši od osnovnog ASCII-ja, kao i njegovih proširenih verzija CP866, KOI8-R, Windows 1251 i završavajući s modernim Unicode Consortium kodiranjem UTF 16 i 8.

Nekima se ova informacija može činiti nepotrebnom, ali znate li koliko pitanja primam posebno u vezi s puzećim krakozyabrima (nečitljivi skup znakova). Sada ću imati priliku uputiti sve na tekst ovog članka i pronaći svoje pogreške. Pa, pripremite se za upijanje informacija i pokušajte pratiti tijek priče.

ASCII - osnovno kodiranje teksta za latinicu

Razvoj kodiranja teksta dogodio se istodobno s formiranjem IT industrije, a tijekom tog vremena uspjeli su proći dosta promjena. Povijesno gledano, sve je počelo s EBCDIC-om, koji je bio prilično disonantan u ruskom izgovoru, što je omogućilo kodiranje slova latinične abecede, arapskih brojeva i interpunkcijskih znakova s ​​kontrolnim znakovima.

Ali ipak, polazište za razvoj modernog kodiranja teksta treba smatrati slavnim ASCII(Američki standardni kod za razmjenu informacija, koji se na ruskom obično izgovara kao "aski"). Opisuje prvih 128 znakova koje najčešće koriste korisnici engleskog govornog područja - latinična slova, arapske brojke i interpunkcijski znakovi.

Ovih 128 znakova opisanih u ASCII-ju također uključuje neke servisne znakove kao što su zagrade, hash oznake, zvjezdice itd. Zapravo, možete ih i sami vidjeti:

Upravo je ovih 128 znakova iz izvorne verzije ASCII-ja postalo standard, au svakom drugom kodiranju sigurno ćete ih pronaći i pojavljivat će se ovim redoslijedom.

Ali činjenica je da s jednim bajtom informacija možete kodirati ne 128, već čak 256 različitih vrijednosti (dva na potenciju osam jednako je 256), tako da nakon osnovne verzije Asuke postoji cijeli niz proširena ASCII kodiranja, u kojem je osim 128 osnovnih znakova bilo moguće kodirati i simbole nacionalnog kodiranja (na primjer, ruski).

Ovdje je vjerojatno vrijedno reći nešto više o sustavima brojeva koji se koriste u opisu. Prvo, kao što svi znate, računalo radi samo s brojevima u binarnom sustavu, odnosno s nulama i jedinicama ("Booleova algebra", ako ju je netko pohađao na institutu ili školi). , od kojih je svaki dva na potenciju, počevši od nule pa sve do dva na sedmi:

Nije teško razumjeti da sve moguće kombinacije nula i jedinica u takvom dizajnu mogu biti samo 256. Pretvaranje broja iz binarnog sustava u decimalni sustav prilično je jednostavno. Samo trebate zbrojiti sve moći dvojke s jedinicama iznad njih.

U našem primjeru, ispada da je to 1 (2 na nultu potenciju) plus 8 (dva na 3 potenciju), plus 32 (dva na petu potenciju), plus 64 (na šestu potenciju), plus 128 (na sedmu potenciju). Ukupno je 233 u decimalnom zapisu. Kao što vidite, sve je vrlo jednostavno.

Ali ako pažljivo pogledate tablicu s ASCII znakovima, vidjet ćete da su predstavljeni u heksadecimalnom kodiranju. Na primjer, "zvjezdica" odgovara heksadecimalnom broju 2A u Aski. Vjerojatno znate da se u heksadecimalnom brojevnom sustavu, osim arapskih brojeva, koriste i latinična slova od A (znači deset) do F (znači petnaest).

Pa onda, za pretvaranje binarnog broja u heksadecimalni pribjeći sljedećoj jednostavnoj i očitoj metodi. Svaki bajt informacija podijeljen je na dva dijela od četiri bita, kao što je prikazano na gornjoj snimci zaslona. Da. U svakom pola bajta, samo šesnaest vrijednosti (dva na četvrtu potenciju) može se kodirati u binarnom obliku, što se lako može predstaviti kao heksadecimalni broj.

Štoviše, u lijevoj polovici bajta stupnjevi će se morati ponovno brojati počevši od nule, a ne kao što je prikazano na snimci zaslona. Kao rezultat toga, jednostavnim izračunima dobivamo da je broj E9 kodiran na snimci zaslona. Nadam se da vam je bio jasan tijek mog razmišljanja i rješenje ove zagonetke. Pa, sada nastavimo, zapravo, govoriti o kodiranju teksta.

Proširene verzije Asuke - CP866 i KOI8-R kodiranja s pseudografijom

Dakle, počeli smo razgovarati o ASCII-ju, koji je bio, takoreći, polazište za razvoj svih modernih kodiranja (Windows 1251, Unicode, UTF 8).

U početku je sadržavao samo 128 znakova latinične abecede, arapske brojeve i nešto drugo, ali u proširenoj verziji postalo je moguće koristiti svih 256 vrijednosti koje se mogu kodirati u jednom bajtu informacija. Oni. Postalo je moguće dodati simbole slova vašeg jezika u Aski.

Ovdje ćemo morati ponovno napraviti digresiju kako bismo objasnili - zašto nam uopće trebaju kodiranja? tekstova i zašto je to toliko važno. Znakovi na zaslonu vašeg računala formiraju se na temelju dvije stvari - skupova vektorskih oblika (reprezentacija) različitih znakova (nalaze se u datotekama s ) i koda koji vam omogućuje izvlačenje iz tog skupa vektorskih oblika (datoteka fonta ) upravo znak koji će trebati umetnuti na Pravo mjesto.

Jasno je da su sami fontovi odgovorni za vektorske oblike, ali operativni sustav i programi koji se u njemu koriste odgovorni su za kodiranje. Oni. bilo koji tekst na vašem računalu bit će skup bajtova, od kojih svaki kodira jedan jedini znak istog teksta.

Program koji prikazuje ovaj tekst na ekranu (uređivač teksta, preglednik itd.), prilikom parsiranja koda, čita kodiranje sljedećeg znaka i traži odgovarajući vektorski oblik u potrebnoj datoteci fonta, koja je povezana za prikaz ovog tekstualni dokument. Sve je jednostavno i banalno.

To znači da kako bismo kodirali bilo koji znak koji nam je potreban (na primjer, iz nacionalne abecede), moraju biti ispunjena dva uvjeta - vektorski oblik ovog znaka mora biti u korištenom fontu i taj se znak može kodirati u proširenom ASCII kodiranju u jedan bajt. Stoga postoji cijela hrpa takvih opcija. Samo za kodiranje znakova ruskog jezika postoji nekoliko varijanti proširene Aske.

Na primjer, izvorno se pojavio CP866, koji je imao mogućnost korištenja znakova iz ruske abecede i bio je proširena verzija ASCII-ja.

Oni. njegov gornji dio u potpunosti se poklapao s osnovnom verzijom Aske (128 latiničnih znakova, brojeva i drugih gluposti), koja je prikazana na slici iznad, ali donji dio tablice s CP866 kodiranjem imao je izgled prikazan na slici ispod i omogućio vam da kodirate još 128 znakova (ruska slova i sve vrste pseudografskih znakova):

Vidite, u desnom stupcu brojevi počinju s 8, jer... brojevi od 0 do 7 odnose se na osnovni dio ASCII-ja (pogledajte prvu sliku zaslona). Da. Rusko slovo "M" u CP866 imat će kod 9C (nalazi se na sjecištu odgovarajućeg retka s 9 i stupca s brojem C u heksadecimalnom brojevnom sustavu), koji se može napisati u jednom bajtu informacije, a ako postoji odgovarajući font s ruskim znakovima, ovo će se slovo bez problema pojaviti u tekstu.

Odakle ovaj iznos? pseudografija u CP866? Cijela stvar je u tome što je ovo kodiranje za ruski tekst razvijeno još u onim mračnim godinama kada grafički operativni sustavi nisu bili tako rašireni kao sada. A u Dosi i sličnim tekstualnim operativnim sustavima, pseudografika je omogućila da se barem nekako diverzificira dizajn tekstova, pa stoga CP866 i svi ostali njegovi vršnjaci iz kategorije proširenih verzija Asuke obiluju njime.

CP866 je distribuirao IBM, ali osim toga, razvijen je niz kodiranja za znakove ruskog jezika, na primjer, isti tip (prošireni ASCII) može se pripisati KOI8-R:

Načelo njegovog rada ostaje isto kao kod CP866 malo ranije opisanog - svaki znak teksta kodiran je jednim bajtom. Snimka zaslona prikazuje drugu polovicu tablice KOI8-R, jer prva polovica potpuno je u skladu s osnovnom Asukom, koja je prikazana na prvoj snimci zaslona u ovom članku.

Među značajkama KOI8-R kodiranja, može se primijetiti da ruska slova u njegovoj tablici nisu poredana abecednim redom, kao što su to, na primjer, učinili u CP866.

Ako pogledate prvu snimku zaslona (osnovnog dijela, koji je uključen u sva proširena kodiranja), primijetit ćete da se u KOI8-R ruska slova nalaze u istim ćelijama tablice kao i odgovarajuća slova latinične abecede. iz prvog dijela tablice. To je učinjeno radi praktičnosti prebacivanja s ruskih na latinične znakove odbacivanjem samo jednog bita (dva na sedmu potenciju ili 128).

Windows 1251 - moderna verzija ASCII-ja i zašto se pojavljuju pukotine

Daljnji razvoj kodiranja teksta bio je posljedica činjenice da su grafički operacijski sustavi dobivali na popularnosti i da je potreba za korištenjem pseudografike u njima s vremenom nestala. Kao rezultat toga, nastala je cijela grupa koja je, u biti, još uvijek bila proširena verzija Asuke (jedan znak teksta kodiran je samo jednim bajtom informacije), ali bez upotrebe pseudografskih simbola.

Pripadali su takozvanim ANSI kodovima, koje je razvio Američki institut za standarde. U uobičajenom govoru naziv ćirilica koristio se i za verziju s podrškom za ruski jezik. Primjer za to bi bio.

Povoljno se razlikovao od prethodno korištenih CP866 i KOI8-R po tome što su mjesto pseudografskih simbola u njemu zauzeli nedostajući simboli ruske tipografije (osim znaka naglaska), kao i simboli koji se koriste u slavenskim jezicima bliskim ruski (ukrajinski, bjeloruski itd.):

Zbog takvog obilja kodiranja ruskog jezika, proizvođači fontova i proizvođači softvera stalno su imali glavobolje, a vi i ja, dragi čitatelji, često smo dobili iste ozloglašene krakozyabry kada je došlo do zabune s verzijom korištenom u tekstu.

Vrlo često su izlazile na vidjelo prilikom slanja i primanja poruka e-poštom, što je podrazumijevalo izradu vrlo složenih tablica pretvorbe, koje, zapravo, nisu mogle suštinski riješiti ovaj problem, a korisnici su se često koristili za dopisivanje kako bi izbjegli notorne trikove prilikom korištenja Ruska kodiranja poput CP866, KOI8-R ili Windows 1251.

Zapravo, pukotine koje su se pojavile umjesto ruskog teksta bile su rezultat netočne upotrebe kodiranja ovog jezika, koje nije odgovaralo onom u kojem je tekstualna poruka izvorno kodirana.

Recimo da ako pokušate prikazati znakove kodirane pomoću CP866 pomoću Windows 1251 kodne tablice, tada će se pojaviti te iste besmislice (besmisleni skup znakova), potpuno zamjenjujući tekst poruke.

Slična se situacija vrlo često pojavljuje na forumima ili blogovima, kada se tekst s ruskim znakovima greškom sprema u pogrešnom kodiranju koje se na web-mjestu koristi prema zadanim postavkama ili u pogrešnom uređivaču teksta, koji dodaje gegove kodu koji nisu vidljivi prostim okom.

Na kraju je mnogima dosadila ovakva situacija s gomilom kodiranja i stalnim puzanjem sranja, te su se stvorili preduvjeti za stvaranje nove univerzalne varijacije koja bi zamijenila sve postojeće i konačno riješila problem s izgledom nečitljivih tekstova. Osim toga, postojao je problem jezika poput kineskog, gdje je bilo mnogo više jezičnih znakova od 256.

Unicode - univerzalna kodiranja UTF 8, 16 i 32

Ove tisuće znakova skupine jezika jugoistočne Azije nikako se ne mogu opisati u jednom bajtu informacija koje su bile dodijeljene za kodiranje znakova u proširenim verzijama ASCII-ja. Kao rezultat toga, stvoren je konzorcij tzv Unicode(Unicode - Unicode Consortium) uz suradnju mnogih lidera IT industrije (onih koji proizvode softver, koji kodiraju hardver, koji kreiraju fontove), koji su bili zainteresirani za nastanak univerzalnog kodiranja teksta.

Prva varijacija objavljena pod pokroviteljstvom Unicode konzorcija bila je UTF 32. Broj u nazivu kodiranja označava broj bitova koji se koriste za kodiranje jednog znaka. 32 bita jednaka su 4 bajta informacija koje će biti potrebne za kodiranje jednog znaka u novom univerzalnom UTF kodiranju.

Kao rezultat toga, ista datoteka s tekstom kodiranim u proširenoj verziji ASCII iu UTF-32, u potonjem slučaju, imat će četiri puta veću veličinu (težinu). Ovo je loše, ali sada imamo priliku pomoću YTF kodirati broj znakova jednak dva na trideset drugu potenciju ( milijarde znakova, koji će pokriti bilo koju stvarno potrebnu vrijednost s kolosalnom marginom).

Ali mnoge zemlje s jezicima europske skupine uopće nisu trebale koristiti tako veliki broj znakova u kodiranju, međutim, kada su koristile UTF-32, bez razloga su dobile četverostruko povećanje težine tekstualnih dokumenata, i kao rezultat, povećanje količine internetskog prometa i količine pohranjenih podataka. To je puno, a takvo rasipanje nitko si ne bi mogao priuštiti.

Kao rezultat razvoja Unicodea, UTF-16, koji se pokazao toliko uspješnim da je standardno prihvaćen kao osnovni prostor za sve znakove koje koristimo. Koristi dva bajta za kodiranje jednog znaka. Da vidimo kako ova stvar izgleda.

U operacijskom sustavu Windows možete slijediti stazu "Start" - "Programi" - "Pribor" - "Alati sustava" - "Tablica znakova". Kao rezultat, otvorit će se tablica s vektorskim oblicima svih fontova instaliranih na vašem sustavu. Ako odaberete Unicode skup znakova u “Naprednim opcijama”, moći ćete vidjeti za svaki font posebno cijeli niz znakova koji su u njemu uključeni.

Usput, klikom na bilo koji od njih možete vidjeti njegov dvobajt kod u UTF-16 formatu, koji se sastoji od četiri heksadecimalne znamenke:

Koliko se znakova može kodirati u UTF-16 pomoću 16 bita? 65,536 (dva na potenciju od šesnaest), a to je broj koji je usvojen kao osnovni prostor u Unicodeu. Osim toga, postoje načini za kodiranje oko dva milijuna znakova pomoću njega, ali oni su bili ograničeni na prošireni prostor od milijun znakova teksta.

Ali ni ova uspješna verzija Unicode kodiranja nije donijela previše zadovoljstva onima koji su pisali, recimo, programe samo na engleskom, jer se za njih, nakon prelaska s proširene verzije ASCII na UTF-16, težina dokumenata udvostručila ( jedan bajt po znaku u Aski i dva bajta za isti znak u YUTF-16).

Odlučeno je osmisliti upravo kako bi se zadovoljili svi i svašta u Unicode konzorciju kodiranje promjenjive duljine. Zvao se UTF-8. Unatoč osmici u nazivu, zapravo ima promjenjivu duljinu, tj. Svaki znak teksta može se kodirati u niz duljine od jednog do šest bajtova.

U praksi UTF-8 koristi samo raspon od jednog do četiri bajta, jer izvan četiri bajta koda više nije ni teoretski moguće zamisliti ništa. Svi latinični znakovi u njemu su kodirani u jedan bajt, baš kao u dobrom starom ASCII-ju.

Ono što je vrijedno pažnje je da u slučaju kodiranja samo latinice, čak i oni programi koji ne razumiju Unicode će i dalje čitati ono što je kodirano u YTF-8. Oni. središnji dio Asuke jednostavno je prebačen u ovu kreaciju konzorcija Unicode.

Ćirilični znakovi u UTF-8 su kodirani u dva bajta, a, na primjer, gruzijski znakovi su kodirani u tri bajta. Konzorcij Unicode, nakon što je stvorio UTF 16 i 8, riješio je glavni problem - sada imamo fontovi imaju jedan prostor koda. A sada ga njihovi proizvođači mogu ispuniti samo vektorskim oblicima tekstualnih znakova na temelju svojih snaga i mogućnosti. Sada čak dolaze u setovima.

U "Tablici znakova" iznad možete vidjeti da različiti fontovi podržavaju različit broj znakova. Neki fontovi bogati Unicodeom mogu biti prilično teški. Ali sada se ne razlikuju po tome što su stvoreni za različita kodiranja, već po tome što je proizvođač fonta ispunio ili nije u potpunosti ispunio prostor jednog koda određenim vektorskim oblicima.

Lude riječi umjesto ruskih slova - kako to popraviti

Pogledajmo sada kako se krakozyabrs pojavljuju umjesto teksta ili, drugim riječima, kako se odabire ispravno kodiranje za ruski tekst. Zapravo, to je postavljeno u programu u kojem kreirate ili uređujete ovaj tekst, ili kodirate pomoću fragmenata teksta.

Za uređivanje i stvaranje tekstualnih datoteka, ja osobno koristim vrlo dobar, po mom mišljenju, . Međutim, može istaknuti sintaksu stotina drugih programskih i označnih jezika, a također ima mogućnost proširenja pomoću dodataka. Pročitajte detaljnu recenziju ovog prekrasnog programa na navedenoj poveznici.

U gornjem izborniku Notepad++ nalazi se stavka "Encodings", gdje ćete imati priliku pretvoriti postojeću opciju u onu koja se prema zadanim postavkama koristi na vašoj web stranici:

U slučaju stranice na Joomli 1.5 i novijoj verziji, kao iu slučaju bloga na WordPressu, trebate odabrati opciju izbjegavanja pojave pukotina UTF 8 bez BOM-a. Što je prefiks sastavnice?

Činjenica je da su, kada su razvijali kodiranje YUTF-16, iz nekog razloga odlučili priložiti mu nešto poput mogućnosti pisanja koda znakova u izravnom nizu (na primjer, 0A15) i obrnuto (150A) . A kako bi programi točno razumjeli u kojem redoslijedu čitati kodove, izumljen je BOM(Byte Order Mark ili, drugim riječima, signatura), što se izražavalo dodavanjem tri dodatna bajta na sam početak dokumenata.

U UTF-8 kodiranju, u konzorciju Unicode nisu predviđeni BOM-ovi, pa stoga dodavanje potpisa (ona notorna dodatna tri bajta na početku dokumenta) jednostavno sprječava neke programe u čitanju koda. Stoga kod spremanja datoteka u UTF uvijek moramo odabrati opciju bez BOM-a (bez potpisa). Dakle, vi ste unaprijed zaštitite se od puzanja krakozyabrs.

Ono što je vrijedno pažnje je da neki programi u sustavu Windows to ne mogu učiniti (ne mogu spremiti tekst u UTF-8 bez BOM-a), na primjer, isti zloglasni Windows Notepad. Sprema dokument u UTF-8, ali još uvijek dodaje potpis (tri dodatna bajta) na njegov početak. Štoviše, ti će bajtovi uvijek biti isti - pročitajte kod u izravnom nizu. Ali na poslužiteljima, zbog ove sitnice, može nastati problem - izaći će prevaranti.

Stoga, ni pod kojim uvjetima Nemojte koristiti obični Windows notepad za uređivanje dokumenata na vašoj stranici ako ne želite da se pojave pukotine. Već spomenuti uređivač Notepad++ smatram najboljom i najjednostavnijom opcijom, koja praktički nema nedostataka i sastoji se samo od prednosti.

U Notepad++, kada odaberete kodiranje, imat ćete opciju pretvoriti tekst u UCS-2 kodiranje, koje je po prirodi vrlo blisko standardu Unicode. Također će u Notepadu biti moguće kodirati tekst u ANSI, tj. u odnosu na ruski jezik, to će biti Windows 1251, koji smo već opisali gore.Odakle dolaze ove informacije?

Registriran je u registru vašeg operativnog sustava Windows - koje kodiranje odabrati u slučaju ANSI, koje odabrati u slučaju OEM (za ruski jezik to će biti CP866). Ako postavite neki drugi zadani jezik na svom računalu, ta će kodiranja biti zamijenjena sličnim iz kategorije ANSI ili OEM za taj isti jezik.

Nakon što spremite dokument u Notepad++ u kodiranju koje vam je potrebno ili otvorite dokument sa stranice za uređivanje, možete vidjeti njegov naziv u donjem desnom kutu uređivača:

Kako bi izbjegli rednecks Osim gore opisanih radnji, bit će korisno napisati informacije o ovom kodiranju u zaglavlju izvornog koda svih stranica web mjesta kako ne bi došlo do zabune na poslužitelju ili lokalnom hostu.

Općenito, svi hipertekstualni označni jezici osim Html-a koriste posebnu xml deklaraciju koja određuje kodiranje teksta.

Prije raščlambe koda, preglednik zna koja se verzija koristi i kako točno treba interpretirati znakovne kodove tog jezika. Ali ono što je vrijedno pažnje je da ako spremite dokument u zadanom Unicodeu, onda se ova xml deklaracija može izostaviti (kodiranje će se smatrati UTF-8 ako nema BOM ili UTF-16 ako postoji BOM).

U slučaju dokumenta na Html jeziku, kodiranje se koristi za označavanje Meta element, koji je napisan između uvodne i završne oznake Head:

... ...

Ovaj unos se prilično razlikuje od onog usvojenog u, ali je u potpunosti u skladu s novim Html 5 standardom koji se polako uvodi, te će ga potpuno ispravno razumjeti svi preglednici koji se trenutno koriste.

U teoriji, bilo bi bolje postaviti Meta element koji označava kodiranje Html dokumenta što je više moguće u zaglavlju dokumenta tako da u trenutku susreta s prvim znakom u tekstu koji nije iz osnovnog ANSI-ja (koji se uvijek čitaju ispravno iu bilo kojoj varijanti), preglednik bi već trebao imati informacije o tome kako interpretirati kodove tih znakova.

Sretno ti! Vidimo se uskoro na stranicama bloga

Više videa možete pogledati ako odete na
");">

Moglo bi vas zanimati

Što su URL adrese, kako se razlikuju apsolutne i relativne veze za web mjesto?
OpenServer - moderan lokalni poslužitelj i primjer kako pomoću njega instalirati WordPress na računalo
Što je Chmod, koje dozvole dodijeliti datotekama i mapama (777, 755, 666) i kako to učiniti putem PHP-a
Yandex pretraživanje po web-mjestu i online trgovini

Kao što znate, računalo pohranjuje informacije u binarnom obliku, predstavljajući ih kao niz jedinica i nula. Za prevođenje informacija u oblik prikladan za ljudsku percepciju, svaki jedinstveni niz brojeva zamjenjuje se odgovarajućim simbolom kada se prikazuje.

Jedan od sustava za korelaciju binarnih kodova s ​​tiskanim i kontrolnim znakovima je

Na sadašnjoj razini razvoja računalne tehnologije korisnik ne mora znati šifru svakog pojedinog znaka. Međutim, opće razumijevanje načina na koji se kodiranje provodi iznimno je korisno, a za neke kategorije stručnjaka čak i potrebno.

Stvaranje ASCII-ja

Kodiranje je izvorno razvijeno 1963. godine, a zatim je ažurirano dva puta tijekom 25 godina.

U izvornoj verziji, tablica ASCII znakova uključivala je 128 znakova; kasnije se pojavila proširena verzija, gdje je spremljeno prvih 128 znakova, a prethodno nedostajući znakovi dodijeljeni su kodovima s uključenim osmim bitom.

Dugi niz godina ovo je kodiranje bilo najpopularnije u svijetu. Godine 2006. Latin 1252 zauzima vodeću poziciju, a od kraja 2007. do danas Unicode čvrsto drži vodeću poziciju.

Računalni prikaz ASCII

Svaki ASCII znak ima svoj kod, koji se sastoji od 8 znakova koji predstavljaju nulu ili jedinicu. Najmanji broj u ovom prikazu je nula (osam nula u binarnom sustavu), što je šifra prvog elementa u tablici.

Dva koda u tablici bila su rezervirana za prebacivanje između standardnog US-ASCII i njegove nacionalne varijante.

Nakon što je ASCII počeo uključivati ​​ne 128, već 256 znakova, postala je raširena varijanta kodiranja, u kojoj je izvorna verzija tablice pohranjena u prvih 128 kodova s ​​8. bitom nula. Nacionalni pisani znakovi pohranjeni su u gornjoj polovici tablice (pozicije 128-255).

Korisnik ne mora izravno znati ASCII kodove znakova. Programer softvera obično samo treba znati broj elementa u tablici da izračuna svoj kod koristeći binarni sustav ako je potrebno.

ruski jezik

Nakon razvoja kodiranja za skandinavske jezike, kineski, korejski, grčki itd. u ranim 70-ima, Sovjetski Savez je počeo stvarati vlastitu verziju. Ubrzo je razvijena verzija 8-bitnog kodiranja nazvana KOI8, koja je zadržala prvih 128 kodova ASCII znakova i dodijelila isti broj pozicija za slova nacionalne abecede i dodatne znakove.

Prije uvođenja Unicodea, KOI8 je dominirao ruskim segmentom interneta. Postojale su mogućnosti kodiranja i za rusku i za ukrajinsku abecedu.

ASCII problemi

Budući da broj elemenata čak ni u proširenoj tablici nije prelazio 256, nije postojala mogućnost smještaja više različitih pisama u jedno kodiranje. U 90-ima se na Runetu pojavio problem "crocozyabr", kada su tekstovi upisani ruskim ASCII znakovima bili netočno prikazani.

Problem je bio u tome što se različiti ASCII kodovi nisu međusobno slagali. Podsjetimo, na pozicijama 128-255 mogli su se nalaziti razni znakovi, a pri promjeni jednog ćiriličnog kodiranja u drugo sva slova teksta su zamijenjena slovima s istim brojem u drugoj verziji kodiranja.

Trenutna država

S pojavom Unicodea, popularnost ASCII-ja počela je naglo opadati.

Razlog tome leži u činjenici da je novo kodiranje omogućilo prilagodbu znakova iz gotovo svih pisanih jezika. U ovom slučaju, prvih 128 ASCII znakova odgovara istim znakovima u Unicodeu.

Godine 2000. ASCII je bio najpopularniji kodni kod na Internetu i korišten je na 60% web stranica koje je Google indeksirao. Do 2012. godine udio takvih stranica pao je na 17%, a mjesto najpopularnijeg kodiranja preuzeo je Unicode (UTF-8).

Dakle, ASCII je važan dio povijesti informacijske tehnologije, ali se njegova upotreba u budućnosti čini neobećavajućom.

Unicode (Unicode na engleskom) je standard za kodiranje znakova. Jednostavno rečeno, ovo je tablica korespondencije između tekstualnih znakova ( , slova, elementi interpunkcije) binarnih kodova. Računalo razumije samo niz nula i jedinica. Kako bi znao što točno treba prikazati na ekranu, potrebno je svakom znaku dodijeliti svoj jedinstveni broj. Osamdesetih godina znakovi su bili kodirani u jednom bajtu, odnosno osam bitova (svaki bit je 0 ili 1). Tako se pokazalo da jedna tablica (kodiranje ili skup) može primiti samo 256 znakova. Ovo možda neće biti dovoljno ni za jedan jezik. Stoga se pojavilo mnogo različitih kodiranja, zabuna s kojima je često dovodila do toga da se umjesto čitljivog teksta na ekranu pojavljuju čudne besmislice. Bio je potreban jedinstveni standard, što je postao Unicode. Najčešće korišteno kodiranje je UTF-8 (Unicode Transformation Format), koje koristi 1 do 4 bajta za predstavljanje znaka.

Simboli

Znakovi u Unicode tablicama numerirani su heksadecimalnim brojevima. Na primjer, ćirilično veliko slovo M označeno je U+041C. To znači da se nalazi na sjecištu retka 041 i stupca C. Možete ga jednostavno kopirati i zalijepiti negdje. Kako ne biste preturali po višekilometarskom popisu, trebali biste se poslužiti pretraživanjem. Kada odete na stranicu simbola, vidjet ćete njegov Unicode broj i kako je napisan različitim fontovima. Sam znak možete unijeti u traku za pretraživanje, čak i ako je umjesto njega nacrtan kvadrat, barem da saznate što je to bilo. Također, na ovoj stranici postoje posebni (i nasumični) skupovi iste vrste ikona, prikupljeni iz različitih odjeljaka, radi lakšeg korištenja.

Standard Unicode je međunarodni. Uključuje likove iz gotovo svih pisama svijeta. Uključujući i one koji se više ne koriste. Egipatski hijeroglifi, germanske rune, pismo Maja, klinasto pismo i alfabeti drevnih država. Prikazane su i oznake utega i mjera, notni zapisi i matematički pojmovi.

Sam Unicode konzorcij ne izmišlja nove znakove. One ikone koje pronađu svoju upotrebu u društvu dodane su u tablice. Na primjer, znak rublje aktivno se koristio šest godina prije nego što je dodan u Unicode. Emoji piktogrami (emotikoni) također su se prvi put široko koristili u Japanu prije nego što su uključeni u kodiranje. Ali zaštitni znaci i logotipi tvrtki se u načelu ne dodaju. Čak i one uobičajene poput Appleove jabuke ili Windows zastavice. Do danas je oko 120 tisuća znakova kodirano u verziji 8.0.

Prekrivanje znakova

Znak BS (backspace) omogućuje pisaču ispis jednog znaka iznad drugog. ASCII je omogućio dodavanje dijakritičkih znakova slovima na ovaj način, na primjer:

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

Bilješka: u starim fontovima, apostrof " je nacrtan nakošeno ulijevo, a tilda ~ je pomaknuta prema gore, tako da im odgovara uloga akuta i tilde na vrhu.

Ako je isti znak superponiran na znak, rezultat je efekt podebljanog fonta, a ako je podcrtano na znak, rezultat je podcrtani tekst.

  • a BS a → a
  • aBS_→ a

Bilješka: Ovo se koristi, na primjer, u sustavu pomoći za čovjeka.

Nacionalne ASCII varijante

Norma ISO 646 (ECMA-6) predviđa mogućnost postavljanja nacionalnih simbola na mjesto @ [ \ ] ^ ` { | } ~ . Osim ovoga, na licu mjesta # može se objaviti £ , i na mjestu $ - ¤ . Ovaj je sustav vrlo prikladan za europske jezike gdje je potrebno samo nekoliko dodatnih znakova. Verzija ASCII bez nacionalnih znakova naziva se US-ASCII ili "International Reference Version".

Kasnije se pokazalo da je prikladnije koristiti 8-bitna kodiranja (kodne stranice), gdje je donja polovica kodne tablice (0-127) zauzeta US-ASCII znakovima, a gornja polovica (128-255) dodatnim znakovima, uključujući skup nacionalnih znakova. Stoga se gornja polovica ASCII tablice, prije širokog usvajanja Unicodea, aktivno koristila za predstavljanje lokaliziranih znakova, slova lokalnog jezika. Nedostatak jedinstvenog standarda za postavljanje ćiriličnih znakova u ASCII tablicu uzrokovao je mnoge probleme s kodiranjem (KOI-8, Windows-1251 i drugi). Drugi jezici s nelatiničnim pismom također su patili od toga što su imali nekoliko različitih kodiranja.

.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 ZVONO BKSP HT LF VT FF CR TAKO SI.
1. DC 0 DC 1 DC 2 DC 3 DC 4 GREŠKA SINKRONIZACIJA L.E.M. S 0 S 1 S 2 S 3 S 4 S 5 S 6 S 7
2.
3.
4. PRAZAN ! " # $ % & " ( ) * + , - . /
5. 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
6.
7.
8.
9.
A. @ A B C D E F G H ja 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 ja j k l m n o
F. str q r s t u v w x g z ESC DEL

Na onim računalima gdje je minimalna adresabilna jedinica memorije bila 36-bitna riječ, u početku su korišteni 6-bitni znakovi (1 riječ = 6 znakova). Nakon prelaska na ASCII, takva su računala počela sadržavati ili 5 sedmo-bitnih znakova (1 bit je ostao dodatni) ili 4 devet-bitna znaka u jednoj riječi.

ASCII kodovi se također koriste za određivanje koja je tipka pritisnuta tijekom programiranja. Za standardnu ​​QWERTY tipkovnicu tablica kodova izgleda ovako:

Najbolji članci na temu