ASCII era infatti originariamente concepito come un codice a 7 bit. Ciò è stato fatto ben prima che i byte a 8 bit diventassero onnipresenti, e anche negli anni '90 si poteva trovare software che presupponeva di poter utilizzare l'8 ° bit di ogni byte di testo per i propri scopi ("non pulito a 8 bit"). Al giorno d'oggi le persone lo considerano una codifica a 8 bit in cui i byte da 0x80 a 0xFF non hanno un significato definito, ma è un retcon .
Esistono dozzine di codifiche di testo che utilizzano l'ottavo bit; possono essere classificati come compatibili con ASCII o meno e a larghezza fissa o variabile. Compatibilità ASCII significa che, indipendentemente dal contesto , singoli byte con valori da 0x00 a 0x7F codificano gli stessi caratteri che avrebbero in ASCII. Non vuoi avere nulla a che fare con una codifica di testo non compatibile con ASCII se puoi evitarlo; i programmi ingenui che si aspettano ASCII tendono a interpretarli erroneamente in modo catastrofico, spesso infrangendo la sicurezza. Sono così deprecati oggigiorno che (ad esempio) HTML5 ne proibisce l'uso sul Web pubblico, con la sfortunata eccezione di UTF-16 . Non ne parlerò più.
Una codifica a larghezza fissa significa come suona: tutti i caratteri sono codificati utilizzando lo stesso numero di byte. Per essere compatibile con ASCII, una codifica fissa deve codificare tutti i suoi caratteri utilizzando un solo byte, quindi non può contenere più di 256 caratteri. La codifica più comune al giorno d'oggi è Windows-1252 , un'estensione di ISO 8859-1 .
C'è solo una codifica compatibile con ASCII a larghezza variabile che vale la pena conoscere al giorno d'oggi, ma è molto importante: UTF-8 , che racchiude tutto Unicode in una codifica compatibile con ASCII. Vuoi davvero usarlo se puoi gestirlo.
Come nota finale, "ASCII" oggigiorno prende la sua definizione pratica da Unicode, non il suo standard originale (ANSI X3.4-1968), perché storicamente c'erano diverse dozzine di variazioni sul repertorio ASCII a 127 caratteri - per esempio, alcune di la punteggiatura potrebbe essere sostituita con lettere accentate per facilitare la trasmissione del testo francese. Oggigiorno tutte queste variazioni sono obsolete e quando la gente dice "ASCII" significa che i byte con valore da 0x00 a 0x7F codificano i punti di codice Unicode da U + 0000 a U + 007F. Questo probabilmente ti interesserà solo se ti ritroverai a scrivere uno standard tecnico.
Se sei interessato alla storia di ASCII e alle codifiche che l'hanno preceduta, inizia con l'articolo "The Evolution of Character Codes, 1874-1968" (copia samizdat su http://falsedoor.com/doc/ascii_evolution-of- character-codes.pdf ) e poi inseguirne i riferimenti (molti dei quali non sono disponibili online e possono essere difficili da trovare anche con l'accesso a una biblioteca universitaria, mi dispiace dirlo).