Ir directamente al contenido de esta página

codexexempla.org

Sobre la advertencia de BOM en el validador del W3C

Tabla de contenidos

  1. La advertencia
  2. ¿Qué es el BOM?
  3. ¿Por qué una marca así?
  4. ¿Y ahora qué hago?
  5. Más información sobre UTF y el BOM

La advertencia

Puede ocurrir que hayamos creado un documento XHTML codificado en UTF-8. Puede ocurrir que una vez que hayamos añadido su contenido queramos validarlo. Puede ocurrir también que empleemos para ello el validador del W3C. Y puede ocurrir, por último, que obtengamos una misteriosa advertencia como ésta1:

Byte-Order Mark found in UTF-8 File.
The Unicode Byte-Order Mark (BOM) in UTF-8 encoded files is known to cause problemas for some texto editors and older browsers. You may want to consider avoiding its use until it is better supported.

En la versión actual del validador —en el momento en que escribo es la 0.8.1, publicada el 8 de agosto de 2007— la advertencia presenta un aspecto bastante discreto, como se puede ver en esta captura:

La advertencia en el nuevo validador del W3C

No obstante, en la versión anterior, la advertencia presentaba un aspecto un tanto alarmante:

La advertencia en la versión anterior del validador

Dejando a un lado la mala impresión que puede causar a un usuario que compruebe la validez de nuestro sitio —sobre todo si se trata de un cliente que sepa qué es eso de validar una página—, en los navegadores antiguos puede hacer que al inicio del documento aparezcan una serie de caracteres inesperados, por lo general . Estos caracteres son el BOM.

¿Qué es el BOM?

Las siglas corresponden a Byte Order Mark, ‘Marca de Orden de Byte’2, y es una firma (signature) o marca que incluyen algunas aplicaciones al comienzo de un documento para indicar que específicamente el texto contenido es Unicode. La marca es EF BB BF, y es la que crea los caracteres indeseados.

¿Por qué una marca así?

Aunque en el caso de UTF-8 no tiene utilidad real, en UTF-16 y UTF-32 indica lo que en inglés se llama endiannes, u orden en el que se almacenan los bytes, y —por explicarlo de una manera harto simplificada— tiene que ver con la dirección de lectura de los diversos idiomas. Dependiendo de si el texto se lee de izquierda a derecha o de derecha a izquierda, el BOM será big-endian o little-endian3, respectivamente.

¿Y ahora qué hago?

Qué no cunda el pánico. En la página informativa del W3C con respecto a este tópico ofrecen tres soluciones:

  1. borrar los caracteres a mano,
  2. comprobar cómo está guardando nuestra aplicación el archivo,
  3. o crear un script de Perl que los elimine de todos los archivos del servidor.

Por los problemas que suponen las soluciones 1 —a veces los caracteres en un editor son invisibles— y 3 —hay que saber Perl—, nos queda comprobar cómo hemos guardado el archivo. Como ejemplo, en Dreamweaver 8, tanto si sobre el documento comprobamos con botón derecho Propiedades de página… → Titulo/Codificación

Cuadro Título/Propiedades en Dreamweaver 8

como si elegimos Archivo… → Guardar como… aparece una casilla de verificación, «Incluir firma Unicode BOM»: basta con no marcarla.

Cuadro Guardar como… en Dreamweaver 8

Otras aplicaciones se referirán a ello de manera similar.

Más información sobre UTF y el BOM

Notas

  1. Dado que la advertencia se debe a la codificación del archivo, sólo aparecerá en el caso de que el documento se esté comprobando por medio de la entrada de su URL en el validador, o por medio del envío del archivo. Con el método de cortar y pegar el código en la caja de entrada directa no puede aparecer. Volver
  2. BOM son también las siglas de Browser Object Model, ‘Modelo de Objeto de Navegador’, que define para JavaScript objetos tales como window.

    El bom también es uno de los enemigos clásicos de la saga Final Fantasy

    El bomb, tal y como aparecía en Triple Triad (Final Fantasy VIII)

    …aunque no venga al caso. Volver

  3. Parece ser que estos curiosos nombres están tomados de Los viajes de Gulliver de Jonathan Swift (inglés). Volver

Contacto

En virtud de la Ley Orgánica 15/1999 de Protección de Datos de Carácter Personal le informo de que los datos que proporcione no serán empleados para otro fin que el de responder a su mensaje. En especial, me comprometo a no cederlos a terceros ni a emplearlos para enviar información no solicitada.

Del blog de Digital Icon