W3docs

ISO-8859-1

ISO-8859-1 (Latin-1) es una codificación de un solo byte. Aprende sus 256 puntos de código, por qué los navegadores la tratan como Windows-1252 y sus entidades.

ISO-8859-1 (llamada así por la Organización Internacional de Normalización, y también conocida como Latin-1) es una codificación de caracteres de un solo byte heredada. Esta página explica qué es, dónde todavía se encuentra, la sorprendente forma en que los navegadores la manejan en realidad y la referencia completa de caracteres y entidades.

Ten en cuenta que ISO-8859-1 no es la predeterminada en los navegadores modernos. Desde HTML5, el conjunto de caracteres predeterminado es UTF-8, que es la codificación que debes usar en cualquier documento nuevo. ISO-8859-1 importa hoy principalmente cuando lees o mantienes páginas antiguas.

Qué es ISO-8859-1

ISO-8859-1 es una codificación de un solo byte: cada carácter se almacena en exactamente un byte, por lo que puede representar un máximo de 256 puntos de código, numerados del 0 al 255. Esos 256 espacios se dividen en dos mitades:

  • 0–127 — idénticos a ASCII. Las letras latinas básicas A–Z y a–z, los dígitos 0–9, la puntuación, el espacio y los caracteres de control viven aquí.
  • 128–255 — el suplemento Latin-1: letras acentuadas (à, é, ñ, ü) y símbolos como ©, £, ¥, ½ y ÷. Estos cubren la mayoría de los idiomas de Europa occidental.

Al ser de un solo byte, ISO-8859-1 no puede representar caracteres fuera de este conjunto — no hay manera de codificar, por ejemplo, el signo del euro €, el griego, el cirílico ni ningún script CJK. Esa limitación es precisamente la razón por la que el multi-byte UTF-8 la reemplazó. Para una visión más amplia de cómo se relacionan las codificaciones, consulta Conjuntos de caracteres HTML.

Contexto histórico

En los años noventa y a principios de los dos mil, ISO-8859-1 era la codificación de reserva predeterminada para HTTP y HTML en la web occidental, por lo que muchas páginas antiguas se escribieron con ella. Todavía hoy se encuentra en archivos HTML heredados, bases de datos, cabeceras de correo electrónico y respuestas HTTP que no han sido migradas a UTF-8. Reconocerla te ayuda a depurar el clásico problema del "mojibake", donde los caracteres acentuados se muestran como símbolos ilegibles porque los bytes reales de un archivo y su codificación declarada no coinciden.

El problema de Windows-1252

Esta es la fuente de confusión más común. Según el estándar de codificación de WHATWG, cuando un navegador ve un documento declarado como charset=ISO-8859-1, no lo decodifica como ISO-8859-1 verdadero. En cambio, lo decodifica como Windows-1252.

La diferencia está en el rango 128–159. En ISO-8859-1 genuino, esas posiciones son caracteres de control C1 sin usar. Windows-1252 reutiliza ese rango para caracteres imprimibles como el signo del euro (€), las comillas tipográficas (" ", ' '), el guion largo (—) y el símbolo de marca registrada (™). Dado que el contenido real con tanta frecuencia esperaba esos caracteres de Windows, el estándar exige que ISO-8859-1 (y sus alias latin1, iso8859-1, etc.) se traten como Windows-1252 para la decodificación HTML.

La conclusión práctica: una declaración <meta charset="ISO-8859-1"> y una declaración <meta charset="windows-1252"> se comportan de forma idéntica en los navegadores. Cuando no estés seguro de qué codificación heredada usa una página, esta es generalmente la razón por la que los caracteres en el rango 128–159 siguen apareciendo correctamente.

Declarar la codificación de caracteres

Usa <meta charset="UTF-8"> para declarar la codificación de tu documento HTML y colócalo dentro de la sección <head>:

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

La ubicación importa. El estándar HTML requiere que la declaración <meta charset> aparezca dentro de los primeros 1024 bytes del documento. El navegador comienza a leer bytes antes de conocer la codificación, por lo que la declaración debe aparecer lo suficientemente pronto para que el navegador la encuentre y reinterprete el resto de la página correctamente. En el ejemplo anterior, <meta charset="UTF-8"> es lo primero dentro de <head>, cómodamente dentro de ese margen. Para declarar una codificación heredada en cambio, escribirías <meta charset="ISO-8859-1"> (que, como se indicó antes, el navegador trata como Windows-1252).

Caracteres reservados en HTML

Algunos caracteres están reservados en HTML porque se usan para construir el lenguaje HTML. Por ejemplo, no puedes usar los signos mayor que o menor que en tu texto, ya que el navegador intentará interpretarlos como HTML. Usa el nombre de entidad o el número de entidad cuando quieras mostrar cualquiera de los caracteres reservados.

Consulta la lista de caracteres reservados en la tabla siguiente:

CarácterNúmero de entidadNombre de entidadDescripción
"&#34;&quot;comillas dobles
'&#39;&apos;apóstrofo
&&#38;&amp;ampersand
<&#60;&lt;menor que
>&#62;&gt;mayor que

Para la referencia completa de referencias de caracteres con nombre, consulta Entidades HTML.

Símbolos ISO 8859-1

CarácterNúmero de entidadNombre de entidadDescripción
 espacio de no separación
¡¡¡signo de exclamación invertido
¢¢¢centavo
£££libra
¤¤¤moneda
¥¥¥yen
¦¦¦barra vertical rota
§§§sección
¨¨¨diéresis espaciada
©©©copyright
ªªªindicador ordinal femenino
«««comilla angular (izquierda)
¬¬¬negación
­­­guion suave
®®®marca registrada
¯¯¯macrón espaciado
°°°grado
±±±más o menos
²²²superíndice 2
³³³superíndice 3
´´´acento agudo espaciado
µµµmicro
párrafo
···punto medio
¸¸¸cedilla espaciada
¹¹¹superíndice 1
ºººindicador ordinal masculino
»»»comilla angular (derecha)
¼¼¼fracción 1/4
½½½fracción 1/2
¾¾¾fracción 3/4
¿¿¿signo de interrogación invertido
×××multiplicación
÷÷÷división

Caracteres ISO 8859-1

CarácterNúmero de entidadNombre de entidadDescripción
ÀÀÀA mayúscula, acento grave
ÁÁÁA mayúscula, acento agudo
ÂÂÂA mayúscula, acento circunflejo
ÃÃÃA mayúscula, tilde
ÄÄÄA mayúscula, diéresis
ÅÅÅA mayúscula, anillo
ÆÆÆAE mayúscula
ÇÇÇC mayúscula, cedilla
ÈÈÈE mayúscula, acento grave
ÉÉÉE mayúscula, acento agudo
ÊÊÊE mayúscula, acento circunflejo
ËËËE mayúscula, diéresis
ÌÌÌI mayúscula, acento grave
ÍÍÍI mayúscula, acento agudo
ÎÎÎI mayúscula, acento circunflejo
ÏÏÏI mayúscula, diéresis
ÐÐÐETH mayúscula, islandés
ÑÑÑN mayúscula, tilde
ÒÒÒO mayúscula, acento grave
ÓÓÓO mayúscula, acento agudo
ÔÔÔO mayúscula, acento circunflejo
ÕÕÕO mayúscula, tilde
ÖÖÖO mayúscula, diéresis
ØØØO mayúscula, barra
ÙÙÙU mayúscula, acento grave
ÚÚÚU mayúscula, acento agudo
ÛÛÛU mayúscula, acento circunflejo
ÜÜÜU mayúscula, diéresis
ÝÝÝY mayúscula, acento agudo
ÞÞÞTHORN mayúscula, islandés
ßßßs minúscula con acento alemán
àààa minúscula, acento grave
áááa minúscula, acento agudo
âââa minúscula, acento circunflejo
ãããa minúscula, tilde
äääa minúscula, diéresis
åååa minúscula, anillo
æææae minúscula
çççc minúscula, cedilla
èèèe minúscula, acento grave
ééée minúscula, acento agudo
êêêe minúscula, acento circunflejo
ëëëe minúscula, diéresis
ìììi minúscula, acento grave
íííi minúscula, acento agudo
îîîi minúscula, acento circunflejo
ïïïi minúscula, diéresis
ðððeth minúscula, islandés
ñññn minúscula, tilde
òòòo minúscula, acento grave
óóóo minúscula, acento agudo
ôôôo minúscula, acento circunflejo
õõõo minúscula, tilde
öööo minúscula, diéresis
øøøo minúscula, barra
ùùùu minúscula, acento grave
úúúu minúscula, acento agudo
ûûûu minúscula, acento circunflejo
üüüu minúscula, diéresis
ýýýy minúscula, acento agudo
þþþthorn minúscula, islandés
ÿÿÿy minúscula, diéresis

Variantes de ISO-8859-1

ISO-8859-1 es solo la primera parte de la familia más amplia ISO 8859. Cada parte mantiene la mitad inferior ASCII (0–127) pero sustituye la mitad superior (128–255) para cubrir un grupo diferente de idiomas o scripts. Las partes más comunes se enumeran a continuación.

Conjunto de caracteresDescripciónCubre
ISO-8859-1Latin 1América del Norte, Europa occidental, América Latina, el Caribe, Canadá, África.
ISO-8859-2Latin 2Europa oriental.
ISO-8859-3Latin 3Europa del sureste, esperanto y otros.
ISO-8859-4Latin 4Escandinavia/Bálticos (y otros no incluidos en ISO-8859-1).
ISO-8859-5Latin/CirílicoLos idiomas que usan el alfabeto cirílico, como el búlgaro, el bielorruso, el ruso y el macedonio.
ISO-8859-6Latin/ÁrabeLos idiomas que usan el alfabeto árabe.
ISO-8859-7Latin/GriegoEl griego moderno, así como los símbolos matemáticos derivados del griego.
ISO-8859-8Latin/HebreoLos idiomas que usan el alfabeto hebreo.
ISO-8859-9Latin/TurcoEl idioma turco. Igual que ISO-8859-1 excepto que los caracteres turcos reemplazan a los islandeses.
ISO-8859-10Latin/NórdicoLos idiomas nórdicos.
ISO-8859-15Latin 9 (Latin 0)Similar a ISO-8859-1 pero reemplaza algunos símbolos menos comunes con el signo del euro y otros caracteres que faltaban.

Los navegadores modernos detectan automáticamente o recurren a UTF-8 cuando no se especifica ninguna codificación. Las codificaciones heredadas como ISO-8859-1 se admiten principalmente para compatibilidad con versiones anteriores de páginas web. Para los proyectos nuevos, usa siempre UTF-8 para garantizar la compatibilidad completa con Unicode y la coherencia entre plataformas.

Consulta también Conjuntos de caracteres HTML, HTML ASCII y Entidades HTML.

Práctica

Práctica
¿Qué describe mejor la codificación ISO-8859-1?
¿Qué describe mejor la codificación ISO-8859-1?
Was this page helpful?