W3docs

ISO-8859-1

ISO-8859-1 (Latin-1) è una codifica legacy a byte singolo. Scopri come mappa 256 code point, perché i browser la trattano come Windows-1252 e le sue entità.

ISO-8859-1 (intitolata all'Organizzazione internazionale per la standardizzazione, nota anche come Latin-1) è una codifica dei caratteri legacy a byte singolo. Questa pagina spiega di cosa si tratta, dove si incontra ancora oggi, il modo sorprendente in cui i browser la gestiscono effettivamente e il riferimento completo a caratteri ed entità.

Si noti che ISO-8859-1 non è il predefinito nei browser moderni. Da HTML5, il set di caratteri predefinito è UTF-8, che è la codifica da utilizzare per ogni nuovo documento. ISO-8859-1 è rilevante oggi principalmente quando si leggono o si gestiscono pagine più vecchie.

Cos'è ISO-8859-1

ISO-8859-1 è una codifica a byte singolo: ogni carattere è memorizzato esattamente in un byte, quindi può rappresentare al massimo 256 code point, numerati da 0 a 255. Questi 256 slot si dividono in due metà:

  • 0–127 — identici ad ASCII. Le lettere latine di base A–Z e a–z, le cifre 0–9, la punteggiatura, lo spazio e i caratteri di controllo si trovano qui.
  • 128–255 — il supplemento Latin-1: lettere accentate (à, é, ñ, ü) e simboli come ©, £, ¥, ½ e ÷. Coprono la maggior parte delle lingue dell'Europa occidentale.

Poiché è a byte singolo, ISO-8859-1 non può rappresentare caratteri al di fuori di questo insieme — non è possibile codificare, ad esempio, il simbolo dell'euro €, il greco, il cirillico o qualsiasi scrittura CJK. Questa limitazione è esattamente il motivo per cui l'UTF-8 multi-byte l'ha sostituita. Per un quadro più ampio del rapporto tra codifiche, vedere Set di caratteri HTML.

Contesto storico

Negli anni '90 e nei primi anni 2000, ISO-8859-1 era la codifica di fallback predefinita per HTTP e HTML sul web occidentale, quindi moltissime pagine più vecchie sono state scritte con essa. La si incontra ancora oggi in file HTML legacy, database, intestazioni email e risposte HTTP che non sono state migrate a UTF-8. Riconoscerla aiuta a eseguire il debug del classico problema del "mojibake", in cui i caratteri accentati vengono visualizzati come simboli incomprensibili perché i byte effettivi di un file e la sua codifica dichiarata non concordano.

Il problema di Windows-1252

Questa è la fonte più comune di confusione. In conformità con lo standard di codifica WHATWG, quando un browser vede un documento dichiarato come charset=ISO-8859-1, non lo decodifica come ISO-8859-1 vero e proprio. Lo decodifica invece come Windows-1252.

La differenza risiede nell'intervallo 128–159. Nel vero ISO-8859-1 quelle posizioni sono caratteri di controllo C1 inutilizzati. Windows-1252 riutilizza quell'intervallo per caratteri stampabili come il simbolo dell'euro (€), le virgolette tipografiche (" ", ' '), la lineetta em (—) e il simbolo del marchio registrato (™). Poiché i contenuti del mondo reale spesso si aspettavano quei caratteri Windows, lo standard impone che ISO-8859-1 (e i suoi alias latin1, iso8859-1, ecc.) sia trattato come Windows-1252 per la decodifica HTML.

La conclusione pratica: una dichiarazione <meta charset="ISO-8859-1"> e una dichiarazione <meta charset="windows-1252"> si comportano in modo identico nei browser. Quando non si è sicuri di quale codifica legacy utilizzi una pagina, questo è di solito il motivo per cui i caratteri nell'intervallo 128–159 appaiono ancora correttamente.

Dichiarare la codifica dei caratteri

Utilizzare <meta charset="UTF-8"> per dichiarare la codifica del documento HTML e inserirla all'interno della sezione <head>:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
  <!-- Your content here -->
</body>
</html>

Il posizionamento è importante. Lo standard HTML richiede che la dichiarazione <meta charset> appaia entro i primi 1024 byte del documento. Il browser inizia a leggere i byte prima di conoscere la codifica, quindi la dichiarazione deve comparire abbastanza presto perché il browser la trovi e reinterpreti correttamente il resto della pagina. Nell'esempio sopra, <meta charset="UTF-8"> è la primissima cosa all'interno di <head>, comodamente all'interno di quella finestra. Per dichiarare invece una codifica legacy, si scriverebbe <meta charset="ISO-8859-1"> (che, come indicato sopra, il browser tratta come Windows-1252).

Caratteri riservati in HTML

Alcuni caratteri sono riservati in HTML perché vengono utilizzati per costruire il linguaggio HTML. Ad esempio, non è possibile usare il segno di maggiore o minore nel testo, poiché il browser cercherà di interpretarli come HTML. Utilizzare il nome dell'entità o il numero dell'entità quando si vuole visualizzare uno qualsiasi dei caratteri riservati.

Vedere l'elenco dei caratteri riservati nella tabella seguente:

CarattereNumero entitàNome entitàDescrizione
"&#34;&quot;virgolette
'&#39;&apos;apostrofo
&&#38;&amp;e commerciale
<&#60;&lt;minore di
>&#62;&gt;maggiore di

Per il riferimento completo dei riferimenti a caratteri nominati, vedere Entità HTML.

Simboli ISO 8859-1

CarattereNumero entitàNome entitàDescrizione
 spazio non divisibile
¡¡¡punto esclamativo invertito
¢¢¢centesimo
£££sterlina
¤¤¤valuta
¥¥¥yen
¦¦¦barra verticale spezzata
§§§paragrafo
¨¨¨dieresi
©©©copyright
ªªªindicatore ordinale femminile
«««virgolette angolari (sinistra)
¬¬¬negazione
­­­trattino opzionale
®®®marchio registrato
¯¯¯macron
°°°grado
±±±più o meno
²²²apice 2
³³³apice 3
´´´accento acuto
µµµmicro
capoverso
···punto centrale
¸¸¸cediglia
¹¹¹apice 1
ºººindicatore ordinale maschile
»»»virgolette angolari (destra)
¼¼¼frazione 1/4
½½½frazione 1/2
¾¾¾frazione 3/4
¿¿¿punto interrogativo invertito
×××moltiplicazione
÷÷÷divisione

Caratteri ISO 8859-1

CarattereNumero entitàNome entitàDescrizione
ÀÀÀA maiuscola, accento grave
ÁÁÁA maiuscola, accento acuto
ÂÂÂA maiuscola, accento circonflesso
ÃÃÃA maiuscola, tilde
ÄÄÄA maiuscola, dieresi
ÅÅÅA maiuscola, anello
ÆÆÆAE maiuscolo
ÇÇÇC maiuscola, cediglia
ÈÈÈE maiuscola, accento grave
ÉÉÉE maiuscola, accento acuto
ÊÊÊE maiuscola, accento circonflesso
ËËËE maiuscola, dieresi
ÌÌÌI maiuscola, accento grave
ÍÍÍI maiuscola, accento acuto
ÎÎÎI maiuscola, accento circonflesso
ÏÏÏI maiuscola, dieresi
ÐÐÐEth maiuscolo, islandese
ÑÑÑN maiuscola, tilde
ÒÒÒO maiuscola, accento grave
ÓÓÓO maiuscola, accento acuto
ÔÔÔO maiuscola, accento circonflesso
ÕÕÕO maiuscola, tilde
ÖÖÖO maiuscola, dieresi
ØØØO maiuscola, barra
ÙÙÙU maiuscola, accento grave
ÚÚÚU maiuscola, accento acuto
ÛÛÛU maiuscola, accento circonflesso
ÜÜÜU maiuscola, dieresi
ÝÝÝY maiuscola, accento acuto
ÞÞÞThorn maiuscolo, islandese
ßßßs minuscola acuta, tedesco
àààa minuscola, accento grave
áááa minuscola, accento acuto
âââa minuscola, accento circonflesso
ãããa minuscola, tilde
äääa minuscola, dieresi
åååa minuscola, anello
æææae minuscolo
çççc minuscola, cediglia
èèèe minuscola, accento grave
ééée minuscola, accento acuto
êêêe minuscola, accento circonflesso
ëëëe minuscola, dieresi
ìììi minuscola, accento grave
íííi minuscola, accento acuto
îîîi minuscola, accento circonflesso
ïïïi minuscola, dieresi
ðððeth minuscolo, islandese
ñññn minuscola, tilde
òòòo minuscola, accento grave
óóóo minuscola, accento acuto
ôôôo minuscola, accento circonflesso
õõõo minuscola, tilde
öööo minuscola, dieresi
øøøo minuscola, barra
ùùùu minuscola, accento grave
úúúu minuscola, accento acuto
ûûûu minuscola, accento circonflesso
üüüu minuscola, dieresi
ýýýy minuscola, accento acuto
þþþthorn minuscolo, islandese
ÿÿÿy minuscola, dieresi

Varianti di ISO-8859-1

ISO-8859-1 è solo la prima parte della più ampia famiglia ISO 8859. Ogni parte mantiene la metà inferiore ASCII (0–127) ma sostituisce la metà superiore (128–255) per coprire un gruppo diverso di lingue o scritture. Le parti più comuni sono elencate di seguito.

Set di caratteriDescrizioneCopre
ISO-8859-1Latin 1America del Nord, Europa occidentale, America Latina, Caraibi, Canada, Africa.
ISO-8859-2Latin 2Europa orientale.
ISO-8859-3Latin 3Europa sud-orientale, Esperanto e altre lingue varie.
ISO-8859-4Latin 4Scandinavia/Paesi baltici (e altre lingue non presenti in ISO-8859-1).
ISO-8859-5Latin/CirillicoLe lingue che usano l'alfabeto cirillico come bulgaro, bielorusso, russo e macedone.
ISO-8859-6Latin/AraboLe lingue che usano l'alfabeto arabo.
ISO-8859-7Latin/GrecoLa lingua greca moderna e i simboli matematici derivati dal greco.
ISO-8859-8Latin/EbraicoLe lingue che usano l'alfabeto ebraico.
ISO-8859-9Latin/TurcoLa lingua turca. Uguale a ISO-8859-1 ma i caratteri turchi sostituiscono quelli islandesi.
ISO-8859-10Latin/NordicoLe lingue nordiche.
ISO-8859-15Latin 9 (Latin 0)Simile a ISO-8859-1 ma sostituisce alcuni simboli meno comuni con il simbolo dell'euro e altri caratteri mancanti.

I browser moderni rilevano automaticamente o si affidano a UTF-8 quando non è specificata alcuna codifica. Le codifiche legacy come ISO-8859-1 sono supportate principalmente per compatibilità con le versioni precedenti delle pagine web. Per i nuovi progetti, utilizzare sempre UTF-8 per garantire il pieno supporto Unicode e la coerenza multipiattaforma.

Vedere anche Set di caratteri HTML, HTML ASCII e Entità HTML.

Esercitazione

Pratica
Cosa descrive meglio la codifica ISO-8859-1?
Cosa descrive meglio la codifica ISO-8859-1?
Was this page helpful?