Acerca de Byte Order Mark (BOM)
Esta explicación es algo sencilla y elemental, pero quizás nos permita entender y simplificar problemas al momento de ejecutar nuestras páginas ó intentar validarlas. Los documentos codificados en UTF-8 incluyen de por si una marca o byte de control, ubicado al inicio del documento, cuya función es identificarse a si mismos como documentos codificados en UTF-8. Este caracter de control debería ser completamente invisible (de hecho,los procesadores de texto no lo muestran), para otras codificaciones, ya que tiene las caracteríasticas denominadas
espacio no-separable de anchura-cero, (en inglés zero-width no-break space).
En cuanto al validador de la W3C no reportará errores, pero si una advertencia indicando que el BOM puede ser un problema potencial.
Existe una situación especial, que suele ser en la cual se generan los mayores incovenientes. Imaginemos que confeccionamos nuestra página utilizando entidades HTML para representar los caracteres latinos no ingleses, Ñ, á, etc..., ya sea que utilicemos
iso-8859-1 ó
UTF-8, no observaremos errores en el texto. Sin embargo, si no cumplimos con el punto 1
de las recomendaciones y guardamos el documento como
UTF-8 y en el charset de nuestro head definimos
iso-8859-1, nos encontraremos que lo primero que hará visualizar nuestro Navegador será "
 ", que no es más que el BOM visto por
iso-8859-1. Esto puede llevar a comportamientos inesperados y fallos en la presentación de la página, y que se agravan aún si estamos utilizando PHP.
Ejemplos
archivo guardado como ANSI/ASCII y con Charset iso-8859-1
archivo guardado como ANSI/ASCII y con Charset utf-8
archivo guardado como utf-8 no bom y con Charset utf-8 (recomendado)
archivo guardado como utf-8 no bom y con Charset iso-8859-1
archivo guardado con utf-8+BOM y Charset utf-8
archivo guardado con utf-8+BOM y Charset iso-8859-1
El archivo del "texto de prueba" original puede ser descargado desde la Web de Markus Kuhn
UTF-8-demo.txt
Guillermo Gianello - 22-5-09
foros@emprear.com