Rappresentazione dei Caratteri in Unicode

La rappresentazione interna dei caratteri è un problema di cui spesso ci dimentichiamo nel nostro lavoro, sia che venga utilizzato ASCII o EBCDIC, possiamo lavorare senza problemi perché è il sistema stesso se ne occupa in maniera trasparente. Tuttavia qualche volta siamo costretti ad occuparcene in quanto dobbiamo scambiare dati con sistemi diversi o quando siamo di fronte a problematiche di internazionalizzazione. Con il diffondersi di Internet queste problematiche sono cresciute e riuscire ad avere la rappresentazione di lettere accentate, simboli matematici, ideogrammi cinesi e testo in arabo è di fondamentale importanza oggi.
Unicode propone uno standard per la rappresentazione universale di tutti i caratteri ed i simboli utilizzati nelle diverse lingue del mondo. Lo standard Unicode assegna a ciascun carattere da rappresentare un valore numerico e nome univoco. La rappresentazione standard prevede l’uso di 16 bit offrendo la capacità di rappresentare oltre 65.000 caratteri. In realtà l’attuale versione 6.0, che è uscita proprio in questi giorni ( vedere sito dello standard Unicode ), definisce ulteriori codici e sempre di più verrà sviluppato il database; in questi ultimi anni ci si è particolarmente indirizzati verso la rappresentazione di simboli di lingue orientali ed arabe soprattutto per i dispositivi mobile.
L’insieme dei caratteri codificati da Unicode è organizzato in maniera razionale ed efficiente, a ciascun elemento codificato detto code element, è associata una lettera o simbolo valutario o simbolo della lingua Cinese o Giapponese. A ciascun code element è associato un valore numerico univoco ed un nome. Il valore numerico assegnato ad un code element è detto code point e viene indicato in esadecimale preceduto dal prefisso “U+”. Ad esempio alla lettera “A” è associato un code point “U+0041” ed il nome “LATIN CAPITAL LETTER A”. Da ricordare che lo standard Unicode non definisce come tale carattere debba essere rappresentato sullo schermo, né la forma o la dimensione.
Oltre ai caratteri semplici è prevista la possibilità di utilizzare caratteri composti ( composed characters ), ad esempio il carattere “â” è composto da “a” + “^”.
Unicode raggruppa insiemi di caratteri in code block, che sono un insieme di code point che rappresentano caratteri correlati ad un sistema alfabetico ( script ) o insieme di simboli con determinate affinità, come per esempio i caratteri cirillici o i simboli delle lingue orientali CJK ( Chinese Japanese Korean ).
Oltre a definire l’identità di ciascun carattere, Unicode definisce anche la loro rappresentazione in bit. Sono previste tre forme di codifica che consentono di rappresentare le stesse informazioni tramite 8, 16 o 32 bit:

  • UTF-8 : Codifica i caratteri Unicode in sequenze variabili di singoli byte, ha il vantaggio di rappresentare caratteri Unicode corrispondenti alla codifica ASCII con gli stessi valori in byte, pertanto non richiede nessun supporto particolare per i caratteri più comuni.
  • UTF-16 : Rappresenta i caratteri tramite 16 bit e costituisce un buon compromesso tra decodifica efficiente ed occupazione di memoria.
  • UTF-32 : Codifica ciascun carattere con 32 bit utilizzando quindi una notazione estesa ed identificando ciascun carattere con un singolo valore.

Le tre forme di codifica rappresentano lo stesso insieme di caratteri e possono essere trasformate le une nelle altre senza perdita di informazione, la scelta dell’una o dell’altra forma di codifica dipende dal livello di efficienza e compatibilità che si vuole ottenere.
Nella definizione dello standard Unicode è stata posta molta cura nel cercare di mantenere un alto grado di compatibilità con gli altri sistemi di codifica, a questo scopo i primi 127 caratteri coincidono con la codifica ASCII in modo che Unicode risulti una estensione di quest’ultima.
La codifica Unicode si è ormai affermata, essendo in pratica lo standard di tutti i nuovi progetti software, ad esempio i miei programmi gestionali più aggiornati sono stati tutti convertiti in Unicode, in modo che si possa ad esempio inserire anche nomi in cirillico, lingue orientali ed arabo.

Informazioni su Giampaolo Rossi

Sviluppatore di software gestionale da oltre 28 anni.
Questa voce è stata pubblicata in Guida. Contrassegna il permalink.