Marca de orden de bytes (BOM)


Marca de orden de bytes (BOM)

En Unicode, una Marca de orden de bytes o (BOM, por el inglés Byte Order Mark) es el carácter Unicode U+FEFF en code point (espacio no-separable de anchura-cero, en inglés zero-width no-break space), cuando este carácter se emplea para marcar el endianness (la orientación de escritura del flujo de bytes) de una cadena de caracteres UCS/Unicode con código en UTF-16 o UTF-32 y/o como marca para indicar que el texto está codificado en UTF-8, UTF-16 o UTF-32.

Generalmente el BOM es una secuencia difícilmente visible en la mayoría de las codificaciones convencionales u otras codificaciones Unicode (normalmente con el aspecto de una secuencia indescifrable de códigos de control). Aun cuando un BOM se interprete erróneamente como un carácter real contenido en el texto no podrá ser visto debido al hecho de que es un zero-width no-break space. La semántica zero-width no-break space del carácter U+FEFF se ha devaluado con la version Unicode 3.2, que únicamente permite su uso con la semántica BOM [cita requerida].

En UTF-16, un BOM se expresa mediante una secuencia de dos bytes al principio de la cadena codificada para indicar el orden de escritura que emplean los caracteres que la siguen, siendo ésta: FE FF si emplean el orden big-endian (escritura secuencial en el orden natural de lectura) o FF FE si emplean el orden little-endian (al contrario). En ningún caso el valor U+FFFE puede ser un carácter Unicode y este hecho permite que se pueda emplear para detectar el orden de los bytes de la cadena, en contraste con U+FEFF que sí es un carácter.

Mientras que el UTF-8 no está relacionado con ninguna problemática de orden de bytes un BOM codificado en UTF-8 puede ser empleado para etiquetar el texto como UTF-8. Muchas aplicaciones Windows (incluyendo Windows Notepad) añaden un BOM a sus ficheros UTF-8. Sin embargo en los sistemas tipo Unix (que hacen uso exhaustivo de ficheros de texto para configuración) no se recomienda esta práctica, pues puede interferir con el correcto procesado de códigos importantes, tales como el hash-bang al principio de la interpretación de un script [cita requerida]. También podría interferir con el código fuente de aquellos lenguajes de programación que no lo reconozcan. Por ejemplo, gcc informa de los caracteres perdidos al comienzo del fichero fuente, y en PHP, cuando el output buffering está desactivado, tiene el sutil efecto de hacer que la página comience de inmediato a ser enviada al navegador, evitando que las cabeceras (custom headers) puedan ser especificadas por el script PHP. La representación UTF-8 del BOM es la secuencia de bytes EF BB BF, que aparece como los caracteres ISO-8859-1 "" en la mayoría de los editores de textos y navegadores no configurados para manejar UTF-8.

Aunque un BOM puede ser empleado con UTF-32, esta codificación casi nunca se usa en la práctica para ningún tipo de transmisión [cita requerida].

Representaciones de las marcas de orden de bytes para cada codificación

Encoding Representation
UTF-8 EF BB BF
UTF-16 Big Endian FE FF
UTF-16 Little Endian FF FE
UTF-32 Big Endian 00 00 FE FF
UTF-32 Little Endian FF FE 00 00
UTF-7 2B 2F 76, y una de las siguientes secuencias de bytes: [ 38 | 39 | 2B | 2F ]
UTF-1 F7 64 4C
UTF-EBCDIC DD 73 66 73
SCSU 0E FE FF
BOCU-1 FB EE 28 seguido opcionalmente por FF

Véase también

Enlaces externos


Wikimedia foundation. 2010.

Mira otros diccionarios:

  • BOM — Saltar a navegación, búsqueda BOM puede referirse: el Aeropuerto Internacional Chhatrapati Shivaji en Mumbai (ex Bombay), India. la Marca de orden de bytes (BOM) que por ejemplo se usa en UTF 8. Obtenido de BOM Categoría: Wikipedia:Desambiguación …   Wikipedia Español

  • Unicode — El Estándar Unicode es un estándar de codificación de caracteres diseñado para facilitar el tratamiento informático, transmisión y visualización de textos de múltiples lenguajes y disciplinas técnicas además de textos clásicos de lenguas muertas …   Wikipedia Español

  • UTF-16 — que significa en ISO/IEC 10646:2003, “UCS Transformation Format for 16 Planes of Group 00.” es una forma de codificación de caracteres UCS y Unicode utilizando símbolos de longitud variable. Se halla oficialmente definido en el Anexo C de la… …   Wikipedia Español