W3docs

ISO-8859-1

ISO-8859-1 (Latin-1) é uma codificação legada de byte único. Saiba como mapeia 256 pontos de código, por que os navegadores a tratam como Windows-1252 e suas entidades.

ISO-8859-1 (nomeado em referência à International Organization for Standardization, também conhecido como Latin-1) é uma codificação de caracteres legada de byte único. Esta página explica o que é, onde ainda é encontrado, a maneira surpreendente como os navegadores realmente o tratam, e a referência completa de caracteres/entidades.

Note que o ISO-8859-1 não é o padrão nos navegadores modernos. Desde o HTML5, o conjunto de caracteres padrão é o UTF-8, que é a codificação que você deve usar em todo novo documento. O ISO-8859-1 importa hoje principalmente quando você lê ou mantém páginas mais antigas.

O que é o ISO-8859-1

O ISO-8859-1 é uma codificação de byte único: cada caractere é armazenado em exatamente um byte, portanto pode representar no máximo 256 pontos de código, numerados de 0 a 255. Esses 256 slots se dividem em duas metades:

  • 0–127 — idênticos ao ASCII. As letras latinas básicas A–Z e a–z, os dígitos 0–9, pontuação, o espaço e os caracteres de controle estão aqui.
  • 128–255 — o suplemento Latin-1: letras acentuadas (à, é, ñ, ü) e símbolos como ©, £, ¥, ½ e ÷. Estes cobrem a maioria dos idiomas da Europa Ocidental.

Por ser de byte único, o ISO-8859-1 não pode representar caracteres fora desse conjunto — não há como codificar, por exemplo, o sinal de euro €, o grego, o cirílico ou qualquer script CJK. Essa limitação é exatamente o motivo pelo qual o UTF-8 multibyte o substituiu. Para uma visão mais ampla sobre como as codificações se relacionam, veja Conjuntos de Caracteres HTML.

Contexto histórico

Nos anos 1990 e início dos anos 2000, o ISO-8859-1 era a codificação de fallback padrão para HTTP e HTML na web ocidental, portanto muitas páginas mais antigas foram criadas com ele. Você ainda o encontra hoje em arquivos HTML legados, bancos de dados, cabeçalhos de e-mail e respostas HTTP que não foram migradas para UTF-8. Reconhecê-lo ajuda a depurar o clássico problema de "mojibake", onde caracteres acentuados são renderizados como símbolos embaralhados porque os bytes reais de um arquivo e sua codificação declarada estão em desacordo.

O Problema do Windows-1252

Aqui está a fonte mais comum de confusão. De acordo com o Padrão de Codificação WHATWG, quando um navegador vê um documento declarado como charset=ISO-8859-1, ele não o decodifica como ISO-8859-1 verdadeiro. Em vez disso, decodifica como Windows-1252.

A diferença está no intervalo 128–159. No ISO-8859-1 genuíno, essas posições são caracteres de controle C1 não utilizados. O Windows-1252 reutiliza esse intervalo para caracteres imprimíveis como o sinal de euro (€), aspas curvas (" ", ' '), o travessão (—) e o sinal de marca registrada (™). Como o conteúdo do mundo real frequentemente esperava esses caracteres do Windows, o padrão determina que ISO-8859-1 (e seus aliases latin1, iso8859-1, etc.) seja tratado como Windows-1252 para decodificação HTML.

A conclusão prática: uma declaração <meta charset="ISO-8859-1"> e uma declaração <meta charset="windows-1252"> se comportam de forma idêntica nos navegadores. Quando você não tem certeza qual codificação legada uma página usa, geralmente é por isso que os caracteres no intervalo 128–159 ainda aparecem corretamente.

Declarando a Codificação de Caracteres

Use <meta charset="UTF-8"> para declarar a codificação do seu documento HTML e coloque-o dentro da seção <head>:

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

O posicionamento é importante. O padrão HTML exige que a declaração <meta charset> apareça dentro dos primeiros 1024 bytes do documento. O navegador começa a ler os bytes antes de saber a codificação, portanto a declaração precisa aparecer cedo o suficiente para que o navegador a encontre e reinterprete o restante da página corretamente. No exemplo acima, <meta charset="UTF-8"> é a primeira coisa dentro do <head>, confortavelmente dentro dessa janela. Para declarar uma codificação legada, você escreveria <meta charset="ISO-8859-1"> (que, como mencionado acima, o navegador trata como Windows-1252).

Caracteres Reservados em HTML

Alguns caracteres são reservados em HTML porque são usados para construir a linguagem HTML. Por exemplo, você não pode usar os sinais de maior ou menor no seu texto, pois o navegador tentará interpretá-los como HTML. Use o nome da entidade ou o número da entidade quando quiser exibir qualquer um dos caracteres reservados.

Veja a lista de caracteres reservados na tabela abaixo:

CaractereNúmero da EntidadeNome da EntidadeDescrição
"&#34;&quot;aspas
'&#39;&apos;apóstrofo
&&#38;&amp;e comercial
<&#60;&lt;menor que
>&#62;&gt;maior que

Para a referência completa de referências de caracteres nomeados, veja Entidades HTML.

Símbolos ISO 8859-1

CaractereNúmero da EntidadeNome da EntidadeDescrição
 espaço não separável
¡¡¡ponto de exclamação invertido
¢¢¢centavo
£££libra
¤¤¤moeda
¥¥¥iene
¦¦¦barra vertical quebrada
§§§seção
¨¨¨trema de espaçamento
©©©direitos autorais
ªªªindicador ordinal feminino
«««aspas angulares (esquerda)
¬¬¬negação
­­­hífen suave
®®®marca registrada
¯¯¯mácron de espaçamento
°°°grau
±±±mais ou menos
²²²sobrescrito 2
³³³sobrescrito 3
´´´acento agudo de espaçamento
µµµmicro
parágrafo
···ponto médio
¸¸¸cedilha de espaçamento
¹¹¹sobrescrito 1
ºººindicador ordinal masculino
»»»aspas angulares (direita)
¼¼¼fração 1/4
½½½fração 1/2
¾¾¾fração 3/4
¿¿¿ponto de interrogação invertido
×××multiplicação
÷÷÷divisão

Caracteres ISO 8859-1

CaractereNúmero da EntidadeNome da EntidadeDescrição
ÀÀÀA maiúsculo, acento grave
ÁÁÁA maiúsculo, acento agudo
ÂÂÂA maiúsculo, acento circunflexo
ÃÃÃA maiúsculo, til
ÄÄÄA maiúsculo, trema
ÅÅÅA maiúsculo, anel
ÆÆÆAE maiúsculo
ÇÇÇC maiúsculo, cedilha
ÈÈÈE maiúsculo, acento grave
ÉÉÉE maiúsculo, acento agudo
ÊÊÊE maiúsculo, acento circunflexo
ËËËE maiúsculo, trema
ÌÌÌI maiúsculo, acento grave
ÍÍÍI maiúsculo, acento agudo
ÎÎÎI maiúsculo, acento circunflexo
ÏÏÏI maiúsculo, trema
ÐÐÐETH maiúsculo, islandês
ÑÑÑN maiúsculo, til
ÒÒÒO maiúsculo, acento grave
ÓÓÓO maiúsculo, acento agudo
ÔÔÔO maiúsculo, acento circunflexo
ÕÕÕO maiúsculo, til
ÖÖÖO maiúsculo, trema
ØØØO maiúsculo, barra
ÙÙÙU maiúsculo, acento grave
ÚÚÚU maiúsculo, acento agudo
ÛÛÛU maiúsculo, acento circunflexo
ÜÜÜU maiúsculo, trema
ÝÝÝY maiúsculo, acento agudo
ÞÞÞTHORN maiúsculo, islandês
ßßßs minúsculo afiado, alemão
àààa minúsculo, acento grave
áááa minúsculo, acento agudo
âââa minúsculo, acento circunflexo
ãããa minúsculo, til
äääa minúsculo, trema
åååa minúsculo, anel
æææae minúsculo
çççc minúsculo, cedilha
èèèe minúsculo, acento grave
ééée minúsculo, acento agudo
êêêe minúsculo, acento circunflexo
ëëëe minúsculo, trema
ìììi minúsculo, acento grave
íííi minúsculo, acento agudo
îîîi minúsculo, acento circunflexo
ïïïi minúsculo, trema
ðððeth minúsculo, islandês
ñññn minúsculo, til
òòòo minúsculo, acento grave
óóóo minúsculo, acento agudo
ôôôo minúsculo, acento circunflexo
õõõo minúsculo, til
öööo minúsculo, trema
øøøo minúsculo, barra
ùùùu minúsculo, acento grave
úúúu minúsculo, acento agudo
ûûûu minúsculo, acento circunflexo
üüüu minúsculo, trema
ýýýy minúsculo, acento agudo
þþþthorn minúsculo, islandês
ÿÿÿy minúsculo, trema

Variantes do ISO-8859-1

O ISO-8859-1 é apenas a primeira parte da família maior ISO 8859. Cada parte mantém a metade inferior ASCII (0–127), mas troca a metade superior (128–255) para cobrir um grupo diferente de idiomas ou scripts. As partes mais comuns estão listadas abaixo.

Conjunto de caracteresDescriçãoCobre
ISO-8859-1Latin 1América do Norte, Europa Ocidental, América Latina, Caribe, Canadá, África.
ISO-8859-2Latin 2Europa Oriental.
ISO-8859-3Latin 3Sudeste da Europa, Esperanto, outros diversos.
ISO-8859-4Latin 4Escandinávia/Países Bálticos (e outros não incluídos no ISO-8859-1).
ISO-8859-5Latin/CirílicoOs idiomas que usam o alfabeto cirílico, como búlgaro, bielorrusso, russo e macedônio.
ISO-8859-6Latin/ÁrabeOs idiomas que usam o alfabeto árabe.
ISO-8859-7Latin/GregoO grego moderno, bem como símbolos matemáticos derivados do grego.
ISO-8859-8Latin/HebraicoOs idiomas que usam o alfabeto hebraico.
ISO-8859-9Latin/TurcoO idioma turco. Igual ao ISO-8859-1, exceto que os caracteres turcos substituem os islandeses.
ISO-8859-10Latin/NórdicoOs idiomas nórdicos.
ISO-8859-15Latin 9 (Latin 0)Similar ao ISO-8859-1, mas substitui alguns símbolos menos comuns pelo sinal de euro e alguns outros caracteres ausentes.

Os navegadores modernos detectam automaticamente ou recorrem ao UTF-8 quando nenhuma codificação é especificada. Codificações legadas como o ISO-8859-1 são suportadas principalmente para compatibilidade retroativa com páginas web mais antigas. Para novos projetos, sempre use UTF-8 para garantir suporte completo a Unicode e consistência multiplataforma.

Veja também Conjuntos de Caracteres HTML, HTML ASCII e Entidades HTML.

Prática

Prática
O que melhor descreve a codificação ISO-8859-1?
O que melhor descreve a codificação ISO-8859-1?
Was this page helpful?