Ardilla Quio Ardilla Quio

30 de Noviembre de 2010

BOM en UTF-8, ¿qué es?

¿Alguna vez os ha sucedido que al editar ficheros que no fueron creados por vosotros, o probando en un servidor de otro sistema, aparezcan carácteres extraños al comienzo del mismo? ¿o incluso que muestre errores porque ya se han enviado las cabeceras, y no encuentras dónde sucede?

No tienes por qué preocuparte, se trata del BOM que se utiliza en codificaciones Unicode.

El uso de la codificación de caracteres UTF-8 está extendiéndose por la web gracias a su compatibilidad con ASCII (cualquier carácter ASCII se mostraría sin cambios) y ser capaz de representar cualquier carácter Unicode. El BOM es un carácter 0xFEFF son la serie de caracteres 0xef 0xbb 0xbf que se coloca al comienzo de los archivos y que se usa como marca para indicar que el texto está codificado en UTF-8; en un texto con codifcación ISO-8859-1 se representaría como "".

El significado real del carácter BOM es zero-width no-break space por lo que no suele aparecer en la mayoría de las codificaciones y aunque el uso de este carácter en UTF-8 está desaconsejado o no se recomienda, su uso no debería provocar problemas.

¿Por qué se muestra entonces en mi página web?

Dependiendo de la configuración del editor utilizado puede que añada de forma predeterminada el BOM a los ficheros UTF-8. Esto pasa principalmente en aplicaciones Windows que al ejecutarlas en sistemas Linux suelen interferir con el proceso normal de éstas, por ejemplo, en PHP comenzando a enviar el BOM al navegador, y evitando que las cabeceras se especifiquen correctamente.

¿Cómo puedo solucionarlo?

Simplemente deberemos editar el fichero con un editor de texto que nos permita el cambio de configuración y guardaremos este con formato UTF-8 sin BOM. Editores como Dreamweaver, Zend Studio o el editor gratuito Notepad++ permiten esta operación.

21 comentarios

Anónimo

02/07/2021 10:02:39

crack!! muchas gracias por la explicación!!

ericc gaxiola el que trabaja en coppel

20/06/2019 20:00:39

etzelente broh, +10 prro

FGE

02/06/2017 12:58:52

Muchísimas gracias. Me resolvió el problema. Un plugin me cambió un archivo y me lo codificó en UTF-8 BOM

Anónimo

23/12/2016 00:15:10

Genero un archivo csv desde oracle que esta AL16UTF16 y quiero convertirlo a utf8 sin boom

Anónimo

27/12/2015 14:47:11

Byte Order Mark (BOM) es un carácter que indica la ordenación de los bytes en un flujo de caracteres Unicode.

cristian-tc

28/10/2015 12:13:31

Hola, gracias por la aclaración.

Anónimo

18/12/2014 00:47:26

Muy buen aporte, muy útil...

Anónimo

25/04/2014 20:42:20

De muchisima ayuda!

Luis

20/12/2013 11:03:06

Hola de nuevo mitxu.

Me alegro de ver que estás empezando en esto (y no utilizas Dreamweaver).

Supongo que cuando dices Notepad te refieres a Notepad++ (Notepad "a secas" es el bloc de notas).

Lo que preguntas de cuál es la codificación correcta, depende de qué codificación quieras usar en tu página web. Si vas a usar UTF-8, pues esa. Si vas a usar ISO-8859-1 (Latin 1), utiliza ANSI.

Sobre lo que dices de que si quitas el BOM no se ve bien, puede haber dos causas:

1.- En Notepad++ utiliza la opción "Convertir a UTF-8 sin BOM" no uses "Codificar en UTF-8 sin BOM".

2.- Tu archivo está en UTF-8 sin BOM pero en navegador lo está sirviendo como ISO-8859-1 (que es lo que hace por defecto para español) porque no sabe qué codificación debe usar (si tiene BOM ya sabe que es UTF-8). Para arreglar eso deberías indicarle al navegador que debe usar UTF-8. Esto puedes hacerlo cambiando la configuración del servidor o con una meta en el HTML como indican en este enlace: http://blogs.ua.es/webdev/2009/06/25/problemas-de-codific...

Un saludo.

mitxu

20/12/2013 10:36:00

Muchas gracias por tu interes.

Soy novata en diseño web y he empezado a generar mis paginas tanto usando bloc de notas como notepad.

En el blocde notas, al guardar me pide una codificación, ¿Cuál es la correcta? ANSI o UTF-8?.

Si uso el notepad++ y lo codifico como UTF-8, al comprobar mi trabajo en elnavegador no hay problema,sin embargo he leido q es recomendable quitar el BOM para que no de probelmas en otras aplicaciones,pero si lo hago,en el navegador no aparecen ni acentos, ni "ñs" etc...No sé si se me entiende mejor ahora.

Luis

19/12/2013 11:47:54

Hola mitxu.

Siento decirte que no comprendo bien tu problema.

De lo que entiendo, dices que Notepad++ no te respeta los acentos si codificas en UTF-8 sin BOM pero sí si lo codificas en UTF-8 (con BOM). Eso en principio no es posible. La codificación es la misma (UTF-8). La diferencia es sólo si se añade BOM o no en el archivo. En Notepad++ se verán igual los archivos con y sin BOM. Los problemas pueden venir por otras aplicaciones que lean sólo con o sin BOM, pero no en Notepad++.

No puedo ayudarte más sin información adicional, porque no se si tu problema es que tienes un archivo en ANSI y lo quieres convertir a UTF-8, si quieres crear archivos directamente en UTF-8 y no sabes si ponerle o no BOM o si el problema es que el archivo generado no te funciona bien en otra aplicación.

Un saludo.

mitxu

19/12/2013 11:20:17

Si en NOtepad++ indico UTF sin Bom, no me respeta acentos, etc...sin embargo si indico UTF-8 solvento el problema. Tiene algún problema posterior poner UTF-8?.

En el bloc de notas, cómo lo codifico? como UTF-8? 0 c´omo ANSI?

Luis

12/12/2013 13:12:48

Hola carlos.

La codificación de caracteres no convierte los mismos a código HTML. Si fuese un problema de codificación verías signos extraños. Si lo que ves son códigos HTML será porque en alguna parte de la aplicación se están conviertiendo los signos.

Un saludo.

carlos

06/12/2013 10:40:25

Hola, he codificado en UTF-8 sin BOM una base de datos para geolocalizarla en arcGIS. Al ver el mapa en un iPad o iPhone, aparece, en las letras acentuadas y ñ, el código html, correspondiente a esa letra. ¿qué hay que hacer para que se vea correctamente?

Anónimo

03/12/2013 19:02:18

Gracias. Muy claro.

Faustino

16/09/2013 02:14:24

Me sirvió mucho, trabajo con gettext en windows y fedora y ya me tenían harto los errores de encoding

:-)

Alejandro

22/08/2013 05:22:03

Gracias, no podría haber estado más claro.

Nita Kharsdala V.

23/12/2012 08:42:24

Gracias por la explicación.

Borias

28/08/2012 19:25:57

Genial, buena explicacion

Ciul

29/03/2012 01:25:36

Gracias, me sirvió mucho.

Me estaba generando un espaciado con comillas " " en el HTML de mi sitio, por lo que me estaba corriendo la página.

Carlos

09/03/2012 04:04:01

Gracias. Me sirvió mucho.

Comentario anónimo
Comentar como usuario