Skip to main content
Validación HTML

El elemento “script” no debe tener el atributo “charset” a menos que también se especifique el atributo “src”.

Acerca de este problema HTML

El atributo charset en el elemento <script> le dice al navegador qué codificación de caracteres usar al interpretar el archivo de script externo referenciado. Cuando un script se escribe directamente dentro del documento HTML (un script inline), la codificación de caracteres del script es inherentemente la misma que la codificación del documento — no hay un archivo separado que decodificar. Debido a esto, la especificación HTML requiere que charset solo aparezca en elementos <script> que también tengan un atributo src apuntando a un archivo externo.

Incluir charset sin src viola la especificación HTML y señala una malinterpretación de cómo funciona la codificación de caracteres para scripts inline. Los validadores marcan esto porque los navegadores ignoran el atributo charset en scripts inline, lo que significa que no tiene efecto y podría confundir a los desarrolladores haciéndoles pensar que han establecido la codificación cuando no lo han hecho.

También vale la pena señalar que el atributo charset en <script> está obsoleto en el estándar HTML living, incluso para scripts externos. La mejor práctica moderna es servir archivos de script externos con el header HTTP Content-Type correcto (por ejemplo, Content-Type: application/javascript; charset=utf-8) o simplemente asegurar que todos tus archivos usen codificación UTF-8, que es la predeterminada. Si estás trabajando con una base de código antigua que todavía usa charset, considera eliminarlo completamente y confiar en UTF-8 en todo.

Ejemplos

Incorrecto: charset en un script inline

Esto activa el error de validación porque charset se especifica sin un atributo src correspondiente.

<script charset="utf-8">
  console.log("Hello, world!");
</script>

Correcto: Eliminar charset de scripts inline

Dado que los scripts inline usan la codificación del documento, simplemente elimina el atributo charset.

<script>
  console.log("Hello, world!");
</script>

Correcto: Usar charset con un script externo (obsoleto pero válido)

Si necesitas especificar la codificación de un script externo, tanto charset como src deben estar presentes. Ten en cuenta que este uso, aunque válido, está obsoleto.

<script src="app.js" charset="utf-8"></script>

Recomendado: Script externo sin charset

El enfoque moderno preferido es omitir charset completamente y asegurar que el servidor entregue el archivo con el header de codificación correcto, o simplemente usar UTF-8 para todo.

<script src="app.js"></script>

Encuentra problemas como este automáticamente

Rocket Validator escanea miles de páginas en segundos, detectando problemas de HTML en todo tu sitio web.

Ayúdanos a mejorar nuestras guías

¿Te ha sido útil esta guía?

¿Listo para validar tus sitios?
Inicia tu prueba gratuita hoy.