ASCII (skraćenica od „Američki standardni kod za razmenu podataka“ (engl. American Standard Code for Information Interchange), izgovara se „aski“) je skup karaktera i kodna stranica utemeljena na latinskom pismu kakvo koristi engleski jezik i još neki zapadnoevropski jezici. Najčešće se koristi u računarstvu, ali i u komunikacionoj i upravljačkoj opremi u radu sa tekstom. U srpskom jeziku popularno se naziva ošišana latinica (latinica bez kvačica na slovima š, ž, č, ć, đ).

Svaki od ASCII znakova prikazanih ovde jednostavnim bitmapiranim fontom imaju svoje kodne vrednosti, od 89 do 101. Između velikih i malih slova nalaze se šest znakova interpunkcije.

Pregled uredi

Slično drugim kodovima za predstavljanje pisanih znakova, ASCII određuje odnos između skupova bitova i znakova pisanog jezika, i omogućava digitalnim uređajima da međusobno komuniciraju i obrađuju i čuvaju podatke koje sadrže znakove. Znakovni kod ASCII, ili njegovo kompatibilno proširenje (vidi niže), se koristi u gotovo svim računarima, naročito personalnim računarima i radnim stanicama. Preporučeni MIME naziv za ovo kodiranje je „US-ASCII“.

ASCII je, strogo govoreći, sedmobitni kod, što znači da koristi sedam binarnih cifara (u rasponu od 0 do 127 u dekadnom sistemu) za predstavljanje znakovnih podataka. U vreme kada je ASCII bio uveden, mnogi računari su koristili osmobitne grupe (bajtove), ili preciznije oktete) kao najmanju jedinicu za predstavljanje podataka. Osmi bit je bio obično korišćen kao bit parnosti za proveru grešaka u prenosu podataka ili je imao ulogu karakterističnu za dati uređaj. Mašine koje nisu koristile parnost obično su postavljale osmi bit na nulu, mada je bilo i nekih sistema koje su postavljali osmi bit na jedinicu.

ASCII ne propisuje ni na koji način informacije o konceptualnoj strukturi ili izgledu parčeta teksta. To zahteva druge standarde kao što su jezici za označavanje. Konceptualna struktura može se dodati koristeći XML ili HTML a izgled koristeći CSS za relativno jednostavne stvari, SGML za nešto komplikovanije ili PostScript, Display PostScript, ili Teh za napredno podešavanje izgleda teksta i preloma.

ASCII je kao standard prvi put objavilo Američko udruženje za standarde (engl. American Standards Association, ASA) 1963. godine, koja je kasnije promenila ime u ANSI. Postoje razne varijante ASCII-a, ali trenutno najrasprostranjenija je ANSI X3.4-1986, takođe standardizovana kao „ECMA-6, ISO/IEC 646:1991 International Reference Version, ITU-T Recommendation T.50 (09/92)“, i RFC 20. Ugrađena je u svoju najverovatnije najbolju zamenu, unikod, kao prvih 128 kombinacija. Neki računarski stručnjaci smatraju ASCII najuspešnijim softverskim standardom ikad predlaganim.

Istorijski gledano, ASCII se razvio iz telegrafskih kodova i njegova prva komercijalna upotreba je bila kao sedmobitni teleprinterski kod kojeg je proizvodio Servis za podatke Bel. Sistem Bel je imao u planu da koristi šestobitni kod izveden iz koda „Fieldata“ koji je uveo znakove interpunkcije i mala slova u raniji petobitni teleprinterski kod Baudot, ali su se predomislili i pridružili se podkomitetu ANSI-a koji se bavio razvojem ASCII-a. Kod Baudot je služio u slanju i primanju telegrafskih poruka i mnogo toga nasledio iz morzeove azbuke, ali je za razliku od nje svaka jedinica koda bila konstantne dužine. U poređenju sa ranijim telegrafskim kodovima, predloženi kod Sistema Bel i ASCII su bili preuređeni za pogodnije sortiranje i dodate su mogućnosti da se koristi i na drugim uređajima pored teleprintera. Neke mogućnosti ASCII-a, uključujući iskejp sekvence (engl. Escape sequences), su dodate zahvaljujući Bobu Bemeru.

upravljački znakovi ASCII-a uredi

Prva trideset i dva koda u tabeli ASCII-kodova (od 0 do 31 u dekadnom sistemu) su rezervisana za takozvane upravljačke znakove; ovi kodovi praktično ne sadrže nikakve podatke za prikaz, nego upravljaju izlaznim uređajima (npr. štampačima, skenerima, itd.). Tako na primer kod koji ima vrednost 10 predstavlja komandu „novi red“, koja nalaže štampaču da pomeri papir „na gore“ za jedan red, dok kod sa vrednošću 27 simulira pritisak na taster iskejp, lociran u gornjem levom uglu tastature.

Kod 127 (koji nastaje kad svih 7 bitova ima vrednost 1) je još jedan specijalni znak poznat kao „briši“ (engl. delete). Iako je njegova funkcija slična funkcijama ostalih upravljačkih znakova, ovaj znak označava da treba da se „obriše“ odeljak papirne trake, koja je do 1980ih bila još uvek popularan medijum za skladištenje podataka, tako što bi se utisnule sve moguće rupe u papir na odgovarajuću poziciju.

Mnogi upravljački znakovi služe da označe pakete podataka, ili kao komande za upravljanje prenosom podataka (npr. „Postoji li neka stanica?“, „Potvrđujem“, „Ne potvrđujem“, „Početak zaglavlja“, „Početak teksta“, „Kraj teksta“, itd.). Upravljački znakovi iskejp i „zameni“ dozvoljavaju protokolu za prenos podataka da, na primer, označi binarne podatke tako da, ako sadrže bilo kakve podatke koji pripadaju protokolu za prenos, ovi ipak budu obrađeni kao obični podaci.

„Separatorski“ znakovi su trebali da se koriste u sistemima koji koriste magnetne trake, ali su ove ispale sa tržišta pojavom modernijih medijuma.

Upravljački znakovi XON i XOFF se koriste da kontrolišu tok podataka sa nekog brzog uređaja (npr. računara) na neki spor uređaj (npr. štampač) da ne bi došlo do preskakanja i gubljenja podataka.

Rani korisnici ASCII-a su iskoristili određene upravljačke znakove da predstavljaju posebne vrste podataka, kao na primer povratak na početak reda reda, prelazak na početak/kraj bloka itd. Upotrebe su se razlikovale, te je jedan od zadataka pri prevođenju iz jednog formata podataka u drugi obično i pravilno prevođenje ovih specijalnih znakova. Na primer, kontrolni karakter koji predstavlja kraj reda se razlikuje od sistema do sistema. Kada se podaci prebacuju sa jednog sistema na drugi, potrebno je ispravno prepoznati i prevesti ove podatke na odredišnom sistemu.

U binarnom sistemu U dekadnom sistemu U heksadekadnom sistemu Skraćenica Odštampan prikaz Pristup na tastaturi Ime/značenje
0000 0000 0 00 NUL ^@ Karakter sa vrednošću 0
0000 0001 1 01 SOH ^A Početak zaglavlja
0000 0010 2 02 STX ^B Početak teksta
0000 0011 3 03 ETX ^C Kraj teksta
0000 0100 4 04 EOT ^D Kraj prenosa
0000 0101 5 05 ENQ ^E Zahtev
0000 0110 6 06 ACK ^F Potvrda prijema
0000 0111 7 07 BEL ^G Zvonce
0000 1000 8 08 BS ^H Bekspejs
0000 1001 9 09 HT ^I Horizontalni tab
0000 1010 10 0A LF ^J Znak za novi red
0000 1011 11 0B VT ^K Vertikalni tab
0000 1100 12 0C FF ^L Znak za novu stranicu
0000 1101 13 0D CR ^M Povratak na početak reda
0000 1110 14 0E SO ^N Izvlačenje reda
0000 1111 15 0F SI ^O Uvlačenje reda
0001 0000 16 10 DLE ^P Data Link Escape
0001 0001 17 11 DC1 ^Q Signal pomoćnim uređajima 1 (obično paljenje)
0001 0010 18 12 DC2 ^R Signal pomoćnim uređajima 2
0001 0011 19 13 DC3 ^S Signal pomoćnim uređajima 3
0001 0100 20 14 DC4 ^T Signal pomoćnim uređajima 4 (obično gašenje)
0001 0101 21 15 NAK ^U Javljanje o lošem prijemu
0001 0110 22 16 SYN ^V Pomoćni znak za održavanje sinhronizovanosti
0001 0111 23 17 ETB ^W Kraj prenosnog bloka
0001 1000 24 18 CAN ^X Otkazivanje
0001 1001 25 19 EM ^Y Kraj medijuma
0001 1010 26 1A SUB ^Z Zamjena
0001 1011 27 1B ESC ^[ ili ESC Iskejp
0001 1100 28 1C FS ^\ Znak za struktuisanje podataka nivo 4
0001 1101 29 1D GS ^[ Znak za struktuisanje podataka nivo 3
0001 1110 30 1E RS ^^ Znak za struktuisanje podataka nivo 2
0001 1111 31 1F US ^_ Znak za struktuisanje podataka nivo 1
0111 1111 127 7F DEL DEL ili bekspejs Brisanje znaka

Gornja tabela u petoj koloni sadrži znak koji se prikazuje kada se upravljački znak odštampa (umesto interpretira u skladu sa njegovim značenjem); nekim brauzerima je potrebno instalirati dodatne fontove da bi se znak prikazao na pravi način.

Šesta kolona prikazuje uobičajene tastere na tastaturi koje je potrebno pritisnuti da bi se uneli odgovarajući upravljački znakovi. U ovoj koloni, kapica (^) predstavlja taster „Kontrol“ (Ctrl), koji se mora pritisnuti i držati dok se pritiska naredni taster (npr. ^Z znači da se pritisne taster Kontrol i drži dok se pritiska taster Z. Pojedini programi koriste ovu reprezentaciju da prikažu kontrolni karakter na ekranu, u slučaju da ga ne razumeju.

Neki programi za Internet su imali običaj da prevode upravljački znak za brisanje (Delete) u upravljački znak za brisanje unatrag (bekspejs) pri prenosu podataka na server. Ako bi npr. uređivač teksta na serveru prihvatio ovaj karakter i ne bi ga razumio, obično je prikazivao ^H na mestu gde je trebao da obriše prethodni karakter. ^H se zbog toga i danas koristi na duhovit način, npr. „Svakog minuta, rodi se potencijalna naivčina^H^H^H^H^H^H^H^H^H mušterija“.

ASCII znakovi koji se mogu štampati uredi

Kod 32 se koristi za razmak (blanko, belinu) između dve reči, za kojeg je na tastaturi najčešće predviđen dugački horizontalni taster. Kodovi od 33 do 126 se nazivaju štampajućim (engl. printable) znakovima, koji predstavljaju slova, cifre, znakove interpunkcije, i još nekoliko raznih simbola.

Sedmobitni ASCII je pružao sedam „nacionalnih“ karaktera i, ako i hardver i softver to dozvoljavaju, može se koristiti „prekucavanje“ da bi se simulirali dodatni međunarodni znakovi: posle bekspejsa se može otkucati obrnuti apostrof, tilda ili zarez da bi se dobili određeni znakovi.

U binarnom sistemu U dekadnom sistemu U heksadekadnom sistemu Prikaz
0010 0000 32 20 Razmak (␠)
0010 0001 33 21 !
0010 0010 34 22 "
0010 0011 35 23 #
0010 0100 36 24 $
0010 0101 37 25 %
0010 0110 38 26 &
0010 0111 39 27 '
0010 1000 40 28 (
0010 1001 41 29 )
0010 1010 42 2A *
0010 1011 43 2B +
0010 1100 44 2C ,
0010 1101 45 2D -
0010 1110 46 2E .
0010 1111 47 2F /
0011 0000 48 30 0
0011 0001 49 31 1
0011 0010 50 32 2
0011 0011 51 33 3
0011 0100 52 34 4
0011 0101 53 35 5
0011 0110 54 36 6
0011 0111 55 37 7
0011 1000 56 38 8
0011 1001 57 39 9
0011 1010 58 3A :
0011 1011 59 3B ;
0011 1100 60 3C <
0011 1101 61 3D =
0011 1110 62 3E >
0011 1111 63 3F ?
 
U binarnom sistemu U dekadnom sistemu U heksadekadnom sistemu Prikaz
0100 0000 64 40 @
0100 0001 65 41 A
0100 0010 66 42 B
0100 0011 67 43 C
0100 0100 68 44 D
0100 0101 69 45 E
0100 0110 70 46 F
0100 0111 71 47 G
0100 1000 72 48 H
0100 1001 73 49 I
0100 1010 74 4A J
0100 1011 75 4B K
0100 1100 76 4C L
0100 1101 77 4D M
0100 1110 78 4E N
0100 1111 79 4F O
0101 0000 80 50 P
0101 0001 81 51 Q
0101 0010 82 52 R
0101 0011 83 53 S
0101 0100 84 54 T
0101 0101 85 55 U
0101 0110 86 56 V
0101 0111 87 57 W
0101 1000 88 58 X
0101 1001 89 59 Y
0101 1010 90 5A Z
0101 1011 91 5B [
0101 1100 92 5C \
0101 1101 93 5D ]
0101 1110 94 5E ^
0101 1111 95 5F _
 
U binarnom sistemu U dekadnom sistemu U heksadekadnom sistemu Prikaz
0110 0000 96 60 `
0110 0001 97 61 a
0110 0010 98 62 b
0110 0011 99 63 c
0110 0100 100 64 d
0110 0101 101 65 e
0110 0110 102 66 f
0110 0111 103 67 g
0110 1000 104 68 h
0110 1001 105 69 i
0110 1010 106 6A j
0110 1011 107 6B k
0110 1100 108 6C l
0110 1101 109 6D m
0110 1110 110 6E n
0110 1111 111 6F o
0111 0000 112 70 p
0111 0001 113 71 q
0111 0010 114 72 r
0111 0011 115 73 s
0111 0100 116 74 t
0111 0101 117 75 u
0111 0110 118 76 v
0111 0111 119 77 w
0111 1000 120 78 x
0111 1001 121 79 y
0111 1010 122 7A z
0111 1011 123 7B {
0111 1100 124 7C |
0111 1101 125 7D }
0111 1110 126 7E ~

Može se primetiti da se dodavanjem broja 32 na kod nekog velikog slova može dobiti isto takvo malo slovo; u binarnom sistemu, isto ovo se može dobiti podešavanjem šeste binarne cifre (počevši od bita najmanje važnosti) na 1.

Druge varijante naziva za ASCII uredi

Dokument RFC 1345, objavljen juna 1992. godine, i registar znakovnih skupova IANA, priznaju sledeće varijante naziva ASCII kao odgovarajuće za korišćenje na Internetu (velika/mala slova nebitna):

  • ANSI_X3.4-1968 — utvrđeno ime
  • ANSI_X3.4-1986
  • ASCII
  • US-ASCII — poželjno (i prvenstveno za korišćenje) MIME ime
  • us
  • ISO646-US
  • ISO_646.irv:1991
  • iso-ir-6
  • IBM367
  • cp367
  • csASCII

Od ovih, samo varijante naziva US-ASCII i ASCII su u širokoj upotrebi. Često se nalaze u neobaveznom parametru „charset“ zaglavlja dokumenta, ili u analognom „meta“ tagu HTML dokumenta, i u deklaraciji znakovnog skupa u uvodnom delu nekih XML dokumenata.

Varijante ASCII-a uredi

Kako se računarska tehnologija širila svetom mnogi oblici ASCII koda razvijeni su od različitih kompanija ili organizacija za standardizaciju kao bi se izrazili i drugi, ne-engleski jezici koji su koristili alfabete zasnovane na romanskim slovima. Neki od oblika mogli bi se smatrati kao ASCII proširenje, iako je ovakvo ime pogrešno primenjivano kako bi se označile sve varijacije, uključujući i one koje nisu sačuvale ASCII mapu znakova u sedmobitnom opsegu.

ISO 646 (1972) je bio prvi pokušaj da se ispravi engleski uticaj, iako je stvorio probleme sa kompatibilnošću, jer je i taj raspored ipak bio samo sedmobitni komplet znakova. Na raspolaganju nije bilo drugih kodova, pa su neki preuređeni u jezično prilagođene varijante. Tako je postalo nemoguće razlikovati koji znak je predstavljen kojim kodom ako se nije znalo koja varijanta je korišćena, a sistemi za obradu teksta su i onako mogli da koriste samo jedan kodni raspored znakova.

Kasnije, unapređenjem tehnologije, pronađen je način da se oslobodi osmi bit svakog bajta čime je dobijeno novih 128 kodnih mesta za znakove sa novom namenom. Tako je na primer, IBM uveo 8-bitnu kodnu stranicu, kao što je kodna stranica 437, koja je zamenila upravljačke znake grafičkim simbolima kao što su „smeška“ („smilies“), a mapirani su i dodatni grafički znaci do ukupnog broja od 128 novih, slobodnih kodnih mesta. Ove kodne stranice podržane su hardverom proizvođača IBM PC kao i operativnim sistemom MS-DOS.

Osmobitni standardi kao što je ISO/IEC 8859 su predstavljali proširenja ASCII-a, ostavljajući originalni raspored kako jeste i samo dodajući dodatne vrednosti iznad broja 127. Ovo je omogućilo da se rasporedi koriste u više jezika, ali su i ovi standardi imali veliki problem sa nekompatibilnošću i ograničenjima. Danas, najšire korišćeni kodni rasporedi su ISO/IEC 8859-1 i originalni sedmobitni ASCII.

Unikod i ISO/IEC 10646 imaju daleko širi izbor karaktera, i njihove različite forme brzo zamenjuju ISO/IEC 8859 i ASCII u mnogim okruženjima. Dok je ASCII kreiran kao sedmobitni kod, Unikod i UCS su definisani relativno apstraktnim „kodnim tačkama“: nenegativne celobrojne vrednosti kojima odgovaraju niske od jednog ili više binarnih okteta, i koje se s njima povezuju različitim tehnikama kodiranja. Da bi se obezbedila podrška za postojeće aplikacije, prvih 128 kodnih tačaka je rezervisano za iste znakove kao i u ASCII-u. ASCII se na taj način može smatrati podskupom Unikoda i UCS-a. Popularni skup karaktera UTF-8 predlaže upotrebu 1-4 binarnih okteta za svaki znak, tj. za svaku kodnu tačku, i takođe ima prvih 128 znakova istih kao u ASCII-u. Drugi skupovi karaktera poput UTF-16 takođe liče na ASCII po tome kako predstavljaju prvih 128 znakova, ali teže da koriste 16 ili 32 bita po znaku, te nisu u potpunosti saglasni sa ASCII-em bez dodatnog prevođenja.

Vidi još uredi

Vanjske veze uredi