ASCII, Unicode e UCS

Nei documenti i caratteri sono memorizzati come codice numerico. Attualmente l'insieme di codici più comune è il codice ASCII (American Standard Code for Information Interchange). I codici ASCII sono inclusi nell'intervallo da 0 a 255 (rappresentati da un unico byte); per esempio, il codice ASCII di "A" è 65, il codice ASCII di "B" è 66 e così via.

D'altra parte, il World Wide Web è un oggetto globale. Molti script non possono essere gestiti dai caratteri ASCII, come gli script in bengalese, armeno, ebraico, tailandese, tibetano, giapponese, arabo, cirillico e altre lingue.

Per questi motivi, il set di caratteri predefiniti specificato per XML da W3C non è ASCII, ma Unicode. I codici Unicode sono composti non da 1 byte, ma da 2, perciò sono inclusi nell'intervallo da 0 a 65.535 e non solo da 0 a 255. (Tuttavia, per semplicità, i codici Unicode da 0 a 255 corrispondono ai codici ASCII da 0 a 255.) Di conseguenza, Unicode può includere la maggior parte dei simboli usati in tutto il mondo nei set ideografici e di caratteri. Nel sito www.unicode.org sono fornite ulteriori informazioni su Unicode.

Solo circa 40.000 codici Unicode sono riservati (di cui circa 20.000 sono usati per gli ideografi Han, sebbene più di 80.000 di questi ideografi siano stati definiti; 11.000 sono usati per le sillabe coreane Hangul).

In pratica, il supporto Unicode, come la maggior parte della tecnologia XML, attualmente non è completamente supportato dalla maggior parte delle piattaforme. Windows 95/98 non offre un supporto completo per Unicode, sebbene Windows NT e Windows 2000 si avvicinino molto di più all'obiettivo (e XML Spy consente di usare Unicode per scrivere documenti XML in Windows NT). Molto spesso, questo significa che i documenti XML sono scritti in semplice ASCII o in UTF-8, che è una versione compressa di Unicode che usa 8 bit per rappresentare i caratteri. (In pratica, questo è più adatto ai documenti ASCII poiché sono necessari più byte per rappresentare molti simboli diversi dai simboli ASCII e poiché i documenti ASCII convertiti in Unicode hanno una dimensione doppia.) Segue un esempio di come specificare la codifica dei caratteri UTF-8 in un documento XML:

<?xml version="1.0" encoding="UTF-8"?>

<DOCUMENT>

<GREETING>

Hello From XML

</GREETING>

<MESSAGE>

Welcome to the wild and woolly world of XML.

</MESSAGE>

</DOCUMENT>

I processori XML assumono, per impostazione predefinita, che il documento segua la codifica UTF-8, perciò se si omettono le specifiche di codifica, sarà usato UTF-8. Se i documenti XML usano codice ASCII, non si avranno problemi.

In realtà, neppure la codifica Unicode ha spazio sufficiente per tutti i simboli di uso comune. Una nuova specifica, UCS (Universal Character System), chiamata anche ISO 10646, usa 4 byte per simbolo e questo consente la possibilità di poter gestire due miliardi di simboli, molto più del necessario. È possibile specificare la codifica Unicode pura nei documenti XML usando la codifica UCS-2 (chiamata anche ISO-10646-UCS-2), che è la codifica UCS a 2 byte compressa. È possibile anche usare UTF-16, che è una speciale codifica che rappresenta i simboli UCS usando 2 byte in modo che il risultato corrisponda a UCS-2. La codifica UCS standard è definita anche UCS-4 (o ISO-10646-UCS-4).

Si userà la codifica ASCII per la maggior parte dei documenti XML in questo libro poiché il supporto per Unicode e UCS non è ancora diffuso. Per esempio, l'autore non è a conoscenza di nessun vero editor Unicode. D'altro canto, è possibile scrivere documenti in un set di caratteri locali e usare un'utility di traduzione per convertirli in Unicode, oppure è possibile inserire i codici Unicode effettivi direttamente nei documenti. Per esempio, la codifica Unicode di π è 03C0 in esadecimale, perciò è possibile inserire π in un documento con l'entità di tipo carattere (si troveranno ulteriori informazioni sulle entità nel prossimo capitolo) &#x03C0 ;.

Sono disponibili molti più set di caratteri rispetto a quelli descritti in questo contesto; per un elenco più completo, consultare l'elenco proposto dall'agenzia IANA (Internet Assigned Numbers Authority) all'indirizzo www.isi.edu/in-notes/iana/assignments/character-sets .

Conversione dei caratteri ASCII in caratteri Unicode
Se si desidera convertire i file ASCII in Unicode, si può usare il programma native2ascii che è fornito con SDK (Java Software Development Kit), formalmente JDK, di Sun Microsystem. Usando questo strumento, si può effettuare la conversione in codice Unicode dei documenti con il comando: native2ascii file.txt file.uni . È anche possibile effettuare la conversione in molte altri tipi di codifiche oltre Unicode, come nell'Unicode compresso o UTF-8.