Acerca de este problema HTML
La especificación HTML5 establece UTF-8 como la única codificación de caracteres permitida para documentos web declarados a través de etiquetas <meta>. Las codificaciones heredadas como windows-1251 (una codificación de caracteres cirílicos), iso-8859-1, shift_jis y otras ya no son valores válidos en las declaraciones <meta> de HTML5. Esta restricción existe porque UTF-8 es una codificación universal que puede representar prácticamente cualquier carácter de cualquier sistema de escritura, eliminando los problemas de interoperabilidad que plagaron la web cuando docenas de codificaciones competidoras estaban en uso.
Cuando el validador encuentra content="text/html; charset=windows-1251" en un elemento <meta>, lo marca como error porque la parte charset= debe ir seguida de utf-8 — no se acepta ningún otro valor. Esto se aplica tanto si usas la sintaxis más larga <meta http-equiv="Content-Type"> como la más corta <meta charset>.
Por qué es importante
-
Cumplimiento de estándares: El Estándar HTML Living del WHATWG requiere explícitamente
utf-8como codificación de caracteres cuando se declara en una etiqueta<meta>. Las codificaciones no conformes activarán errores de validación. -
Internacionalización: UTF-8 soporta todos los caracteres Unicode, haciendo que tus páginas funcionen correctamente para usuarios de todos los idiomas, incluyendo texto cirílico para el que
windows-1251fue originalmente diseñado. - Seguridad: Las codificaciones heredadas pueden introducir vulnerabilidades de seguridad, incluyendo ciertos vectores de ataque de cross-site scripting (XSS) que explotan la ambigüedad de codificación.
- Consistencia del navegador: Aunque los navegadores aún pueden reconocer codificaciones heredadas, depender de ellas puede causar mojibake (texto desordenado) cuando hay una discrepancia entre la codificación declarada y la real.
Cómo solucionarlo
-
Actualiza la etiqueta
<meta>para declararutf-8como charset. - Vuelve a guardar tu archivo con codificación UTF-8 usando tu editor de texto o IDE. La mayoría de los editores modernos lo soportan — busca una opción de codificación en “Guardar como” o en la barra de estado.
-
Verifica la configuración de tu servidor. Si tu servidor envía un encabezado HTTP
Content-Typecon una codificación diferente, el encabezado del servidor tiene precedencia sobre la etiqueta<meta>. Asegúrate de que ambos coincidan en UTF-8. -
Convierte tu contenido. Si tu texto fue originalmente escrito en
windows-1251, puede que necesites convertirlo a UTF-8. Herramientas comoiconven la línea de comandos pueden ayudar:iconv -f WINDOWS-1251 -t UTF-8 input.html > output.html.
Ejemplos
❌ Incorrecto: Usando charset windows-1251
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
✅ Correcto: Usando utf-8 con sintaxis http-equiv
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
✅ Correcto: Usando la sintaxis más corta <meta charset> (preferida en HTML5)
<meta charset="utf-8">
Ejemplo de documento completo
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<title>Пример страницы</title>
</head>
<body>
<p>Текст на русском языке в кодировке UTF-8.</p>
</body>
</html>
La sintaxis más corta <meta charset="utf-8"> es generalmente preferida en documentos HTML5 porque es más concisa y logra el mismo resultado. Sin importar qué sintaxis elijas, coloca la declaración del charset dentro de los primeros 1024 bytes de tu documento — idealmente como el primer elemento dentro de <head> — para que los navegadores puedan detectar la codificación lo más pronto posible.
Encuentra problemas como este automáticamente
Rocket Validator escanea miles de páginas en segundos, detectando problemas de HTML en todo tu sitio web.