ASCII (acronimo di American Standard Code for Information Interchange, lett. "codice standard americano per lo scambio di informazioni") è un codice per la codifica di caratteri. La prima edizione dello standard ASCII è stata pubblicata dall'American National Standards Institute (ANSI) nel 1963[1], quindi il codice ha subito un'importante revisione nel 1968[2]. L'aggiornamento più recente risale al 1986[3]. In italiano viene pronunciato aschi/ˈaski/ o asci/ˈaʃʃi/[4], mentre la pronuncia originale inglese è askey/ˈæski/.
Con US-ASCII si intende un sistema di codifica dei caratteri a 8 bit, comunemente utilizzato nei calcolatori, proposto dall'ingegnere dell'IBMBob Bemer nel 1961, e successivamente accettato come standard dall'ISO, con il nome di ISO/IEC 646.
Alla specifica iniziale basata su codici di 7 bit fecero seguito negli anni molte proposte di estensione ad 8 bit, con lo scopo di raddoppiare il numero di caratteri rappresentabili. Nei PC IBM si fa per l'appunto uso di una di queste estensioni, ormai standard de facto, chiamata extended ASCII o high ASCII. In questo ASCII esteso, i caratteri aggiunti sono ad esempio vocali accentate, simboli semigrafici e altri simboli di uso meno comune, pensati anche per adattarsi alle specificità delle diverse lingue[5]. I caratteri di ASCII esteso sono codificati nei cosiddetti codepage.
Lo standard successore di ASCII è l'UTF-8, che è diventato la codifica principale di Unicode per internet secondo il W3C, che pur non impedendo altre codifiche (purché correttamente dichiarate), lo consiglia e lo usa quasi sistematicamente negli esempi del suo sito[6], fornendo anche le istruzioni per convertire i documenti (cosa che non fornisce per tutte le codifiche)[7]. Questa codifica di Unicode, che ormai è universalmente accettata da ogni nuovo programma, offre caratteristiche interessanti grazie al fatto di sfruttare il bit di controllo del vecchio ASCII in modo più efficiente. Se da una parte lo prepara per la pensione, UTF-8 in un certo senso ha reso molto più longevo l'ASCII, inglobandolo in una codifica più adatta alle esigenze attuali. Infatti le comunicazioni sono in centinaia di lingue, ed inoltre diverse lingue possono convivere in uno stesso documento, o in uno stesso programma: si pensi ai software di messaggistica istantanea che possono contenere contatti da varie parti del mondo dei quali visualizzare correttamente i nomi.
UTF-8 infatti si distingue dalle altre codifiche Unicode perché sfrutta il vecchio bit di parità di ASCII, non come bit di controllo, bensì come indicatore: analizza ogni byte, e se al posto del vecchio bit di parità c'è 0, allora il byte sarà letto come ASCII a 7 bit e teoricamente compatibile anche con programmi obsoleti; se però il byte corrente inizia con 1, allora sarà concatenato al byte successivo (o ai successivi, in realtà il meccanismo è un poco più complesso). In tal modo riesce ad includere tutti gli alfabeti delle lingue viventi, di alcune morte e potenzialmente può essere esteso per rappresentarne ancora altri (infatti spesso viene aggiornato).
Il vantaggio è che è possibile scrivere un testo in Italiano ed usare un numero di byte di poco maggiore rispetto ad una codifica di ASCII esteso (le lettere accentate occupanno solo 4 byte in più); un testo in lingua Cinese avrà ogni carattere di tre byte, con numeri, lettere, punteggiatura ed altri eventuali caratteri ASCII presenti nel testo di un solo byte.
Tabella dei caratteri
La tabella seguente è relativa al codice US ASCII, ANSI X3.4-1986 (ISO 646 International Reference Version). I codici decimali da 0 a 31 e il 127 sono caratteri non stampabili (caratteri di controllo). Il 32 corrisponde al carattere di "spazio". I codici dal 32 al 126 sono caratteri stampabili.
Esiste anche un tipo di arte, chiamata ASCII art, che consiste nel creare immagini con i caratteri dell'alfabeto ottenendo una grossolana scala di grigi sfruttando il riempimento del carattere.