Saltar al contenido
uencoder

BOM

El BOM (marca de orden de bytes) es el carácter Unicode U+FEFF, colocado al inicio de un flujo de texto para indicar la forma de codificación y el orden de bytes.

Propósito

Señala el orden de bytes big- o little-endian en UTF-16/UTF-32 y sirve de firma de codificación en UTF-8 (aunque UTF-8 no tenga ambigüedad de orden de bytes).

Mecanismo

U+FEFF se traduce a bytes según la forma de codificación: EF BB BF en UTF-8, FF FE en UTF-16LE y FE FF en UTF-16BE. Un decodificador lee los primeros bytes y los compara con BOM conocidos para determinar la codificación. U+FEFF en sí es un espacio de no separación de anchura cero, por lo que puede servir también de firma.

Casos de uso

  • Detección automática de la codificación de archivos de texto
  • Intercambio de texto entre plataformas
  • Marcadores de codificación para archivos CSV/TSV
  • Codificación de archivos exportados de bases de datos

Ejemplos

  • entrada
    UTF-8 BOM
    Output
    EF BB BF

    The first three bytes of a file

Errores comunes

A UTF-8 BOM being rejected by a JSON parser (RFC 8259 forbids it)
Do not use a BOM in JSON files

Términos relacionados

Herramientas relacionadas

References