SAFTCheck
encoding.bom

Byte Order Mark (BOM) al inicio del fichero

La AT rechaza los ficheros SAF-T que empiezan por un BOM UTF-8 o UTF-16.

Qué es un BOM

Un Byte Order Mark es una firma de 2 o 3 bytes al principio absoluto de un fichero de texto que indica qué codificación Unicode usa:

CodificaciónBytes del BOM
UTF-8EF BB BF
UTF-16 BEFE FF
UTF-16 LEFF FE

Por qué la AT rechaza BOMs

Windows-1252 no tiene concepto de BOM. El esquema oficial del SAF-T y el parser de entrada de la AT esperan que el primer byte del fichero sea el < del prólogo XML, no una firma Unicode.

Cuando hay un BOM, la declaración XML se parsea, pero el fichero se rechaza en la entrada sin un error útil.

Cómo aparece un BOM

  • Guardar desde el Bloc de notas en Windows ("UTF-8 con BOM" es lo predeterminado).
  • Algunos ERPs anteponen un BOM al exportar XML "Unicode-aware".
  • Conversión manual del fichero con una herramienta que añade una firma.

Cómo corregir

Elimina los 2 o 3 primeros bytes. El cuerpo del XML se queda igual.

# Linux/macOS, una sola línea para BOM UTF-8
sed -i '1s/^\xEF\xBB\xBF//' my.xml

SAFTCheck elimina el BOM automáticamente cuando pulsas "Corregir automáticamente y descargar".

Detectar un BOM

Abre el fichero en un editor hexadecimal. Los tres primeros bytes deben ser 3C 3F 78 (es decir, <?x), no EF BB BF.

Relacionado

Otras reglas

Usamos una cookie de sesión para iniciar sesión, una cookie de idioma para la preferencia lingüística y Tawk.to para el widget de chat en vivo (que establece sus propias cookies al abrir el chat). Google Analytics (GA4) se carga solo después de que aceptes, con anonimización de IP; sin rastreadores publicitarios. Consulta nuestra Política de Privacidad.