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–Zya–z, los dígitos0–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ácter | Número de entidad | Nombre de entidad | Descripción |
|---|---|---|---|
| " | " | " | comillas dobles |
| ' | ' | ' | apóstrofo |
| & | & | & | ampersand |
| < | < | < | menor que |
| > | > | > | mayor que |
Para la referencia completa de referencias de caracteres con nombre, consulta Entidades HTML.
Símbolos ISO 8859-1
| Carácter | Número de entidad | Nombre de entidad | Descripció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ácter | Número de entidad | Nombre de entidad | Descripció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 caracteres | Descripción | Cubre |
|---|---|---|
| ISO-8859-1 | Latin 1 | América del Norte, Europa occidental, América Latina, el Caribe, Canadá, África. |
| ISO-8859-2 | Latin 2 | Europa oriental. |
| ISO-8859-3 | Latin 3 | Europa del sureste, esperanto y otros. |
| ISO-8859-4 | Latin 4 | Escandinavia/Bálticos (y otros no incluidos en ISO-8859-1). |
| ISO-8859-5 | Latin/Cirílico | Los idiomas que usan el alfabeto cirílico, como el búlgaro, el bielorruso, el ruso y el macedonio. |
| ISO-8859-6 | Latin/Árabe | Los idiomas que usan el alfabeto árabe. |
| ISO-8859-7 | Latin/Griego | El griego moderno, así como los símbolos matemáticos derivados del griego. |
| ISO-8859-8 | Latin/Hebreo | Los idiomas que usan el alfabeto hebreo. |
| ISO-8859-9 | Latin/Turco | El idioma turco. Igual que ISO-8859-1 excepto que los caracteres turcos reemplazan a los islandeses. |
| ISO-8859-10 | Latin/Nórdico | Los idiomas nórdicos. |
| ISO-8859-15 | Latin 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.