Informatica e bit – Codifica

La codifica dei caratteri

Codifica dei caratteri. Il termine carattere indica un tipo di dato non numerico. Sono caratteri tutti i simboli che possono essere immessi da tastiera. Sono esempi di carattere i simboli di punteggiatura, le cifre decimali, le lettere dell’alfabeto, lo spazio, etc. Per rappresentare i caratteri all’interno dell’elaboratore è necessario associare ad ognuno di essi un numero binario.

ASCII

Una codifica molto usata è la codifica ASCII (American Standard Code for Information Exchange) che adotta 7 bit per rappresentare 128 caratteri differenti. I caratteri ASCII sono suddivisi in 4 gruppi di 32 caratteri.

I primi 32 caratteri formano un insieme speciali di caratteri detti caratteri di controllo, cui va aggiunto l’ultimo carattere (127) il carattere per la cancellazione. Vengono utilizzati nella trasmissione di dati o come controllo di dispositivi di stampa. Il secondo gruppo di 32 caratteri, da 32 a 63, comprende vari simboli di punteggiatura, caratteri speciali e cifre decimali. Il terzo gruppo (da 64 a 95) contiene i caratteri alfabetici maiuscoli. Il quarto ed ultimo (da 65 a 127) i caratteri alfabetici minuscoli. Le stringhe di bit dei due codici ASCII relativi ad uno stesso carattere, minuscolo e maiuscolo, differiscono solamente per il bit in posizione 5. Ad esempio, il codice della lettera ‘E’ vale 0100 0101 (69) ed il codice di ‘e’ vale 0110 0101 (101).

Se si usa Windows si può ottenere ogni carattere ASCII tenendo premuto il tasto Alt e digitando il codice decimale corrispondente col tastierino numerico. Per esempio la chiocciola @ si ottiene digitando 64 mentre si tiene premuto il tasto Alt. Nella tastiera inglese sono già presenti tutti i caratteri della tabella standard; nella tastiera italiana invece mancano l’apice (96), le parentesi graffe (123,125) e la tilde (126).

ASCII esteso

Successivamente, siccome il codice ASCII originale era basato sugli alfabeti anglosassoni, venne incrementato il numero di bit della rappresentazione (da 7 a 8 bit). In questo modo fu possibile rappresentare anche caratteri tipici degli alfabeti di altre lingue che non trovavano posto nel codice ASCII a 7 bit. Nacque così il codice ASCII esteso (Extended ASCII) che permette di rappresentare 256 caratteri distinti. Le due estensioni più comuni erano quella dell’ANSI (American National Standard Institute) e del sistema operativo MSDOS (Microsoft Disk Operating System).

Siccome i 128 caratteri in più consentiti dal codice ASCII esteso venivano utilizzati per rappresentare caratteri diversi a seconda del produttore, nacquero numerose varianti ognuna influenzata da un alfabeto nazionale particolare.La conseguenza è stata una riduzione della portabilità dei testi elettronici da un sistema all’altro. Nacque così lo standard ISO8859n dove n indica la tabella estesa utilizzata. Quella per l’Italiano è nota come ISO‐8859‐1 (o Latin1).

Lo standard ISO8859

ISO‐8859‐1 Latin 1 (West Europe)

ISO‐8859‐2 Latin 2 (East Europe)

ISO‐8859‐3 Latin 3 (South Europe)

ISO‐8859‐4 Latin 4 (NorthEurope)

ISO‐8859‐5 Cyrillic

ISO‐8859‐6 Arabic

ISO‐8859‐7 Greek

ISO‐8859‐8 Hebrew

ISO‐8859‐9 Latin 5 (Turkish)

ISO‐8859‐10 Nordic

Ovviamente usare in fase di lettura una tabella ISO‐8859‐n   diversa da quella originale utilizzata per codificare un testo  renderà quest’ultimo parzialmente illeggibile.

UNICODE

Per superare questo tipo di problemi nel 1991 è stato introdotto il sistema di caratteri UNICODE, che utilizzando codici di 16 bit, consente di rappresentare fino a 65536 caratteri diversi (sufficienti per la maggior parte delle lingue del mondo). Trasmettere un testo in formato UNICODE comporta l’invio di una quantità doppia di dati, rispetto ad una codifica ASCII estesa.

Per rappresentare anche i caratteri delle lingue asiatiche, la codifica in standard UNICODE non era sufficiente. Venne quindi sviluppato lo standard UCS (Universal Character Set) che sfrutta codici a 32 bit per un totale di 4.294.967.296 caratteri distinti. I caratteri già codificati in ASCII mantengono la loro codifica in UNICODE e UCS. I caratteri già codificati in UNICODE mantengono la loro codifica in UCS.

Un documento costituito soltanto da caratteri codificabili in ASCII occupa uno spazio: doppio se codificato in UNICODE, quadruplo se codificato in UCS. Lo spazio in eccesso inoltre e costituito da bit impostati a zero; quindi si tratta di spazio sprecato inutilmente.

Per ovviare al problema dello spreco di spazio e mantenere la compatibilità della trasmissione dei documenti su Internet, è stato introdotto il sistema UTF8 (UCS Transformation Format 8 bit).

Se un carattere è rappresentabile in ASCII, allora la sua codifica UTF‐8 rimane la stessa (un singolo ottetto). Se il carattere è rappresentabile in UNICODE o UCS, allora la sua codifica UTF‐8 sarà costituita da più ottetti, il primo dei quali specificherà la lunghezza della sequenza.