Byte Order Mark (BOM)
La Unicode Byte Order Mark o la marca de orden de bytes de Unicode es un carácter de Unicode, que muestra la endianness de un archivo o flujo (stream) de Unicode. Este carácter tiene la posición Unicode U+FEFF y también se puede utilizar para determinar la codificación de un archivo de texto. El carácter siempre aparece primero en el archivo y no se interpreta como parte del texto por el software que admite el formato correspondiente. Una ventaja de esta técnica es que no se debe proporcionar información adicional y la clave para la interpretación se encuentra directamente en el archivo.
- Byte Order Mark de diferentes Codificaciones
- Interpretación de la Byte Order Mark
- Cambiar, Eliminar o Agregar Byte Order Mark
Byte Order Mark de diferentes Codificaciones
Dependiendo de la codificación, una secuencia de bytes diferente resulta del carácter U-FEFF. Las secuencias de bytes de las codificaciones más populares se resumen en esta tabla:
Codificación | Byte Order Mark | ASCII |
ANSI | No BOM | - |
UTF-7 | 2B 2F 76 ( 38 | 39 | 2B | 2F ) | +/v 89+/ |
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 | ÿþ?? |
La última columna (ASCII) muestra cómo se vería la secuencia de bytes de la marca de orden de bytes si se interpretara como caracteres ASCII en un editor de texto.
Para poder leer un archivo en las codificaciones UTF-16 o UTF-32 una marca de orden de bytes es absolutamente necesaria porque un carácter en estas codificaciones ocupa varios bytes y la marca de orden de bytes indica el orden en que deben interpretarse los bytes (ver Big Endian y Little Endian con respecto a la orden de bytes). Por otro lado, en UTF-8 y UTF-7, la marca de orden de bytes no es obligatoria, pero sin embargo conduce a mejores resultados, ya que los programas de otra manera también podrían interpretar tales textos como ANSI.
Puede ver fácilmente que la marca de orden de bytes indica el orden de los bytes, al comparar las secuencias de bytes entre Big Endian (el bit más significativo al principio) y Little Endian (el bit menos significativo al principio), porque estos dos códigos tienen una orden de byte opuesto. En UTF-16 Little Endian, la secuencia de bytes es FF FE y en UTF-16 Big Endian es todo lo contrario (FE FF). Como general en UTF-32, se usan cuatro bytes por carácter. Eso también es evidente, si nos fijamos en la marca de orden de bytes: 00 00 FE FF para UTF-32 Big Endian y FF FE 00 00 para UTF-32 Little Endian.
Interpretación de la Byte Order Mark
Los problemas y las falsas interpretaciones con respecto a la marca de orden de bytes ocurren si los programas no pueden interpretar la marca de orden de bytes y en su lugar muestran caracteres ANSI. Por ejemplo, se puede mostrar  para la marca de orden de bytes de UTF-8 (EF BB BF). Aquí es un poco problemático, porque los archivos ANSI también permiten la secuencia de bytes EF BB BF. Entonces, si almacena la cadena  al principio de un archivo y guarda este archivo como ANSI, la mayoría del software interpretará el resto del archivo como codificado en UTF-8. Con aplicaciones como el TextConverter o el TextEncoder, puede leer y escribir archivos con o sin Byte Order Mark y puede cambiar el formato Unicode de los archivos o si se usa una Byte Order Mark en los archivos o no.
Si el carácter U+FEFF aparece en otra posición que al principio de un archivo, se muestra como un signo con un ancho de 0 y sin interrupción. Sin embargo, el uso deliberado de esta marca es obsoleto para este propósito. U+FEFF se debe usar solo como una marca de orden de bytes y debe usar la posición de código U+2060 para un carácter sin ancho ni interrupción.
Cambiar, Eliminar o Agregar Byte Order Mark
Con el programa TextEncoder puede cambiar, eliminar o agregar la marca de orden de bytes de los archivos. Después de iniciar TextEncoder, puede hacer lo siguiente:
- Arrastre los archivos que desea editar desde cualquier carpeta al TextEncoder.
- En el lado derecho, debajo de "Cambios", active la opción "Codificación".
- En "Escribir Marca de Orden de Bytes (BOM) en archivos", establezca si los archivos deben obtener una marca de orden de bytes o no.
- En las Opciones de Almacenamiento en la parte inferior derecha, establezca si desea sobrescribir los archivos o guardarlos con un nuevo nombre como archivos nuevos.
- Haga clic en el botón "Convertir".
La lista de archivos en TextEncoder contiene una columna llamada "BOM". Aquí puede ver si sus archivos agregados tienen actualmente una marca de orden de bytes o no.