Loading...
+39 0236599396
Sesto San Giovanni 20099, MI - Italy

Programmazione Tips & Tricks

La codifica dei caratteri

Per potere visualizzare correttamente una pagina HTML, un Web Browser (Safari, Firefox, Chrome ecc..) deve essere in grado di riconoscere sia il Set di Caratteri che il Formato di Codifica che sono stati utilizzati.

In HTML5 il set di caratteri e la codifica di default sono Unicode UTF-8.
Se si devono usare codifiche differenti, le stesse vanno specificate nei <meta> come ad esempio:
<head>
   <meta charset="ISO-8859-1">
<head>

In HTML4 per usare Unicode UTF-8 occorre dichiaralo così:
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<head>

Ma.. che cosa significano Unicode e UTF-8?

Unicode è un Set di Caratteri mentre UTF-8 è un Formato di Codifica.
Un Set di Caratteri è un insieme definito di caratteri, segni di punteggiature e simboli, mentre il Formato di codifica definisce la via attraverso la quale il set di caratteri codificato viene mappato in bytes per la sua gestione in un computer.


Perchè Unicode?

Unicode fornisce un unico set di caratteri e un ristretto numero di formati di codifica.
Copre tutte le lingue del mondo ed è progettato per una migliore interoperabilità sia con ASCII che con ISO-8859-1, che sono i set di caratteri più utilizzati fino ad oggi.
Unicode assegna a ogni carattere un unico numero (code point), questo numero identificativo è indipendente dalla piattaforma, dall'applicativo e dalla lingua e indica la sua posizione nel set di caratteri.
L'impiego in HTML è reso possibile grazie alle cosiddette entità (entities)
Le entità HTML possono assumere due forme:
Testuali (non riguardano il contesto Unicode)
Sono un sottogruppo limitato di caratteri (252) a cui è stato assegnato un nome e si rappresentano utilizzando la forma &NomeEntità.
Numeriche (rappresentazione del catattere Unicode)
Questo numero può essere rappresentato in due formati:
Decimale nella forma &#D;, dove D è il numero decimale assegnato.
Esadecimale nella forma "&#xH;" o "&#XH;", dove H è il numero esadecimale assegnasto.
(Le lettere possono essere indifferentemente maiuscole o miniscole)
Un'entità può essere inserita in un punto qualsiasi del codice HTML

I Formati di codifica di Unicode

Unicode UTF-8
É un tipo di codifica a "lunghezza variabile" nel senso che codici di diversa lunghezza sono utilizzati per codificare l'intero set di caratteri Unicode.
La codifica UTF-8 può richiedere fino a quattro byte per ciascun carattere (multibyte encoding).
Questo sistema è stato disegnato per mantenere la retrocompatibilità con il set ASCII oltre ad evitare complicazioni con le altre due codifiche UTF-16 e UTF-32.
I primi 128 caratteri del Set Unicode (che corrispondono uno-a-uno ai caratteri ASCII) sono codificati usando un solo byte.
  • 1 byte: Standard ASCII
  • 2 bytes: Arabo, Ebraico, alcune lingue Europee European scripts
  • 3 bytes: BMP (Basic Multilingual Plane)
  • 4 bytes: Tutti i caratteri Unicode
Unicode UTF-16 Utilizza un singolo codice a 16-bit per codificare i caratteri più comuni e un doppio codice a 16-bit, chiamato "surrogates" per la maggior parte degli altri caratteri contenuti nel set Unicode.
Questa tipologia di codice (surrogates) è chiamata così perche sono in grado di rappresentare un carattere solo "in coppia".

Unicode UTF-32 Utilizza un singolo codice a 32-bit.
È la codifica meno usata. La dimensione del testo generato con questo tipo di codifica è decisamente più grande rispetto a quello generato dalle altre due codifiche (UTF-8 e UTF-16).
La sua capacità di gestire i caratteri che risultano non compresi nel BMP (Basic Multilingual Plane) , peraltro molto rari, può non giustificare la grossa dimensione del testo finale codificato.


Altri Set di Caratteri

ASCII

Acronimo di "American Standard Code for Information Interchange" è stato il primo e più comune set di caratteri utilizzato nel Web fino al Dicembre del 2007, anno in cui fu sorpassato da Unicode UTF-8.
É stato sviluppato partendo dalla codifica usata nelle trasmissioni telegrafiche. Il suo primo utilizzo commerciale fu per la codifica a 7-bit di una telescrivente promossa da Bell.
L'inizio del suo utilizzo pratico risale agli inizi degli anni '60.
Basato originariamente sull'alfabeto Inglese ASCII codifica 128 caratteri in numeri interi a 7-bit.
  • Usa i codici compresi fra 0 e 31 (+ 127) per i caratteri di controllo.
  • Usa i codici compresi fra 32 e 126 per le lettere, i numeri e i simboli.
  • Non usa i codici compresi fra 128 e 255

ANSI (Windows-1252)

Comprende un set di 217 caratteri ed è anche conosciuto come Windows-1252.
Ha rappresentato lo standard dei fonts di caratteri di Microsoft per i sistemi operativi rilasciati fino a Windows 95 e Windows NT 4.
Durante la vita di questi ultimi due prodotti, Microsoft ha aggiunto il simbolo della valuta Euro portando il numero totale dei caratteri a 218 oltre all'introduzione di un nuovo Set di Fonts Pan-European che conteneva il nuovo set di caratteri WGL4 (Windows Glyph List 4) con 652 caratteri.
  • Identico al set ASCII, per i codici compresi fra 0 e 127.
  • Possiede dei caratteri proprietari (codici compresi fra 128 e 159).
  • Identico al set Unicode UTF-8, per codici compresi fra 160 e 255.

ISO-8859-1

Chiamato anche ISO-Latin è il set di carratteri di default per l'HTML 4.01.
Disegnato da ECMA (European Computer Manufacturer's Association) è incluso nel Internet charset register per essere usato con l'identificazione MIME.
  • Identico al set ASCII per i codici compresi fra 0 e 127.
  • No usai codici compresi fra 128 e 159.
  • Identico al set Unicode UTF-8 per codici compresi fra 160 e 255.


Lettere accentate

Una nota a parte merita la gestione delle lettere accentate che ha spesso causato qualche grattacapo agli sviluppatori di pagine web.
Per evitare problemi, è fondamentale una corretta gestione del charset (set di caratteri + codifica), come già evidenziato più sopra, la scelta migliore è utilizzare UTF-8.
Se invece esigenze particolari ci impediscono di usarlo, allora dobbiamo necessariamente usare il charset ISO-8859-1 (Latin 1) che è il set di caratteri/codifica standard per la rappresentazione delle lingue dell'Europa Occidentale.
Per gestirlo dobbiamo dichiararlo nella sezione <head> della pagina utilizzando la seguente sintassi:
  • HTML5: <meta charset="ISO-8859-1">
  • HTML4: <meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1">
Se questo non dovesse bastare dobbiamo necessariamente utilizzare le HTML entities come nell'esempio seguente:
  • À &Agrave; (A maiuscola)
  • à &agrave; (a minuscola con accento grave)
Visualizza la tabella completa

Legenda

UTF Unicode Transformation Format
Formato di codifica
BMP Basic Multilingual Plane
Nell'Unicode standard, "plane" è un gruppo di 65,536 "code point" contigui
Ci sono 17 "planes".
Il primo "plane" (plane 0), è chiamato Basic Multilingual Plane (BMP). Contiene i caratteri della grande maggioranza delle lingue del mondo oltre a un grande numero di simboli.

Obiettivo primario di BMP è stato quello di unificare i principali Set di Caratteri.
Molti dei code point assegnati a BMP sono stati usati per codificare lingue come il Cinese, il Giapponese e il Coreano.


Tabelle utili

  1. Lettere Accentate e Diacritici
  2. Alfabeto Greco
  3. Simboli e Tipografia
  4. Simboli Matematici
  5. Simboli Valuta e Religiosi
  6. Simboli Frecce
  7. Simboli Musica-Carte-Scacchi
  8. Simboli Vari


Link utili

  1. The Unicode Consortium
  2. IANA character sets



Posted by admin