img
home page | percorso
filosofia
| percorso
storia
| percorso
didattica
| percorso
italiano
| percorso
semiserio
| oltre il sito
img

I caratteri di testo e internet

Osservazioni preliminari








I valori ASCII standard (American Standard Code for Information Interchange) sono quelli fra 0 e 127 (esadecimale 00-7F, cioè i valori ottenibili con 7 bit). L'ASCII standard è uguale fra le diverse lingue e le diverse macchine (mac, unix, win...) per i valori fra 32 e 127, rappresentando lettere dell'alfabeto inglese, numeri e alcuni caratteri speciali; mentre quelli fra 0 e 31 sono riservati ai diversi sistemi operativi.
Inizialmente l'HTML usava solo l'ASCII standard fra 31 e 127 per evitare problemi di comunicazione fra sistemi diversi. Infatti, i valori fra 128 e 255 (quelli dell'intero byte di 8 bit, detti sempre ASCII, o meglio ASCII esteso) variano sia fra le diverse lingue occidentali (poi codificate in ISO 8859-1...n) sia nelle diverse macchine.
Un documento HTML (Hypertext Markup Language) contiene caratteri e marcatori (tag) che vengono «spediti nella rete» codificati come sequenze di byte. La codifica di ciascuna sequenza, allora, può essere diversa per i valori sopra 127. Un esempio per chiarire: il codice 224 (esadecimale E0) in una macchina con set di caratteri europei (Western Europe o ISO 8859-1) vale 'à' (a minuscola con accento grave), ma con un set ebraico (ISO 8859-8) vale la lettera 'aleph', con quello greco (ISO 8859-7: il greco moderno non usa più gli spiriti iniziali e ha semplificato l'uso degli accenti) vale 'ipsilon minuscola con diaresi e accento', con quello cirillico (ISO 8859-5) vale 'er minuscola', e così via. Mentre nella codifica giapponese o cinese il valore di un byte dipende da quello che lo precede, cioé si usano due byte per individuare i caratteri.

Ecco che i caratteri HTML, per assicurare la compatibilità e per poter scrivere nello stesso documento le parole con lettere accentate, hanno adottato, dopo all'ASCII standard, anche i valori ASCII 128-255 dell'ISO 8859-1 o latin-1 (già standard ECMA, European Computer Manufacturers Association) che però non usava i valori fra 128 e 159 né quelli fra 0 e 31 [nel codice HTML si può scrivere direttamente il carattere come da tabella]; perciò si sono ricodificati alcuni caratteri e aggiunti valori ASCII più alti.
Dunque, i valori fra 128 e 159 non vanno usati (e neanche quelli fra 0 e 31) anche se i Browser o le diverse macchine li eseguono; mentre per rendere in HTML altri caratteri speciali e le lettere di tutte le lingue del mondo vengono usati valori sopra il 255 di UNICODE (o ISO 10646, fino ad arrivare a 65533: FFFD in esadecimale, utilizzando 16 bit).
Tuttavia un testo HTML può ancora essere scritto con una codifica diversa dal Latin-1 (ad es. ISO 8859-5 per il cirillico o ISO 8859-7 per il greco, dichiarandolo all'inizio del documento): i valori e i caratteri ASCII standard rimangono invariati, mentre le lettere in cirillico o greco (sempre che il Browser le supporti) assumono anche i codici fra 160 e 255 sostituendo il Latin-1. Allora per poter scrivere una lettera latina accentata, in questo caso, si possono usare o i codici numerici ASCII Latin-1 (adottati peraltro anche da Unicode per i valori inferiori a 256), cioè sempre quelli fra 160 e 255 ma nella forma HTML standard '&#d;' o '' [con 'd' per il valore decimale ed 'e' per quello esadecimale], o le «entità HTML».
Le «entità HTML» erano nate per rendere già con l'ASCII standard caratteri che non ne facevano parte (lettere accentate e alcuni caratteri speciali) e, perciò, valgono indipendentemente dal set di caratteri usato [si scrive: '&letteratipoaccento;' o '&nomecarattere;', ad es. 'à' o '§' per l'ASCII Latin-1 224 o 167].





- TAVOLA DEI VALORI ASCII e CARATTERI HTML -

esad.caratt.    esad.[Non usare]
00ASCII 012345 67891011 121314150F
caratt.   
10ASCII 161718192021 222324252627 282930311F
caratt. !"#$% &'()*+ ,-./ [Standard]
20ASCII 323334353637 383940414243 444546472F
caratt. 012345 6789:; <=>?
30ASCII 484950515253 545556575859 606162633F
caratt. @ABCDE FGHIJK LMNO
40ASCII 646566676869 707172737475 767778794F
caratt. PQRSTU VWXYZ[ \]^_
50ASCII 808182838485 868788899091 929394955F
caratt. `abcde fghijk lmno
60ASCII 96979899100101 102103104105106107 1081091101116F
caratt. pqrstu vwxyz{ |}~
70ASCII 112113114115116117 118119120121122123 1241251261277F
caratt. ƒ ˆŠ ŒŽ [Non usare]
80ASCII 128129130131132133 134135136137138139 1401411421438F
caratt. «» ˜š œžŸ
90ASCII 144145146147148149 150151152153154155 1561571581599F
caratt.  ¡¢£¤¥ ¦§¨©ª« ¬­®¯ [Latin-1]
A0ASCII 160161162163164165 166167168169170171 172173174175AF
caratt. °±²³´µ ·¸¹º» ¼½¾¿
B0ASCII 176177178179180181 182183184185186187 188189190191BF
caratt. ÀÁÂÃÄÅ ÆÇÈÉÊË ÌÍÎÏ
C0ASCII 192193194195196197 198199200201202203 204205206207CF
caratt. ÐÑÒÓÔÕ Ö×ØÙÚÛ ÜÝÞß
D0ASCII 208209210211212213 214215216217218219 220221222223DF
caratt. àáâãäå æçèéêë ìíîï
E0ASCII 224225226227228229 230231232233234235 236237238239EF
caratt. ðñòóôõ ö÷øùúû üýþÿ
F0ASCII 240241242243244245 246247248249250251 252253254255FF
caratt. ŒœŸƒˆ˜ ΑΒΓΔΕΖ ΗΘΙΚ
Unicode 338339376402710732 913914915916917918919 920921922[Esempi Unicode]




Gli sviluppi del futuro-prossimo:
ASCII, Unicode e UCS


Nei documenti elettronici i caratteri sono memorizzati come codice numerico esadecimale (a base 16), poi gestito dai computer in formato digitale, cioé nello 0/1 di ciascun bit: per questo si usano sempre potenze di due (come 16, 256, 65536). L’insieme di codici più comune è il cosiddetto ASCII incluso nell’intervallo da 0 a 255, quindi in tutto sono 256 (un unico byte di 8 bit, che vale come misura di riferimento).

- Primo problema: i codici ASCII non sono sempre uguali, lo sono solo per pochi caratteri (circa cento).

- Secondo problema: il World Wide Web è un oggetto globale, ma l'ASCII non può rendere tutti i caratteri accentati delle lingue europee e men che meno quelli dell'arabo, del bengalese, dell'ebraico, del tailandese...
Per questi motivi si è passati prima all'ASCII esteso di Latin-1 poi a Unicode.
I codici Unicode sono composti da 2 byte (16 bit) perciò si hanno 216 possibili codici, ovvero 65536 possibilità. Tuttavia solo circa 40.000 codici Unicode sono definiti (circa 20.000 sono usati per gli ideografi Han, sebbene ve ne siano più di 80.000, e 11.000 sono usati per le sillabe coreane Hangul).
Non so quanto semplifichi il discorso, ma certo semplifica la vita ai computer il fatto che i codici Unicode da 0 a 255 corrispondono ai codici ASCII-standard e ASCII-Latin1 da 0 a 255.
In pratica però, il supporto di Unicode non è completo, quindi spesso si usa ASCII o UTF-8 cioè una versione compressa di Unicode che usa 8 bit per rappresentare i caratteri (specie per l'XML, che appunto prevede di default l'uso di questo standard). Non ci sono differenze fra i codici ASCII-Latin1 e UTF-8; tuttavia UTF-8, a differenze dell'ASCII, non ammette codifiche diverse dal Latin-1. Inoltre, i documenti ASCII convertiti in Unicode hanno una dimensione doppia proprio perché per definire ciascun carattere (per i valori superiori a U+0080, cioè escluso solo l'ASCII-standard) si usano due byte: ì ha valore esadecimale "EC" in ASCII-Latin-1 (come riportato nella tabella sopra), mentre in UTF-8 vale "C3AC" (usando appunto due byte).
In realtà, però, neppure la codifica Unicode ha spazio sufficiente per tutti i simboli. Una nuova specifica, UCS (Universal Character System) o ISO 10646, consente di gestirne due miliardi, molto più del necessario: usa 4 byte per simbolo e per questo è definita UCS-4 (ISO-10646-UCS-4). Ovviamente esiste la codifica ponte fra Unicode e UCS: UCS-2 (ISO-10646-UCS-2), che è la codifica UCS a 2 byte, cioè compressa ed equivalente a Unicode; d'altra parte era già possibile usare UTF-16, cioé la codifica dei simboli Unicode con 2 byte il cui risultato corrisponde a UCS-2.

- Terzo problema: il supporto di Unicode non è ancora completo nelle diverse piattaforme e ancor meno quello di UCS, dunque, in pratica, i documenti vengono scritti col set di caratteri locali (in cui magari i singoli editor di testo usano ancora i codici ASCII estesi) quindi convertiti nei codici Unicode. Oppure, nel caso dell'HTML, si usano direttamente i codici sopra il 255 o le entità [disponibili in un file a parte, con cui si può anche verificare quanto il proprio browser supporti questi set di caratteri].

Sono disponibili molti altri set di caratteri: per un elenco più completo si può vedere il sito dell’agenzia IANA (Internet Assigned Numbers Authority).



--- nota personale ---

Non so quanto tutto questo contribuisca a risolvere, o aggravare, il dato della crisi e futura morte di idiomi patrimonio di ristrette comunità di persone (un po' quel che da noi di fatto sta avvenendo per i dialetti).
Ma tutto sommato ritengo che la tecnica sia contro l'uomo solo se l'uomo la usa contro di sé.


Minuscola sitografia: le lingue in Internet
Testi di riferimento:
Informazioni sui set di caratteri;
Unicode e standardizzazione dei linguaggi;
Unicode, scritture da destra a sinistra, Greco e Thai.
Script e font:
Informazioni sull'apprendimento delle diverse lingue
Font per oltre 80 lingue
Standards applicati:
RFC, sono oltre 70Mb in costante aggiornamento [Download documenti via FTP]

Aggiornato: Venerdì, 11 luglio 2003

backindietro alla home page |  up
torna all'inizio
 |  continua questo percorsogo on