SAFTCheck
encoding.bom

Byte Order Mark (BOM) all'inizio del file

L'AT rifiuta i file SAF-T che iniziano con un BOM UTF-8 o UTF-16.

Cos'è un BOM

Un Byte Order Mark è una firma di 2 o 3 byte all'inizio assoluto di un file di testo che indica quale codifica Unicode usa il file:

CodificaByte del BOM
UTF-8EF BB BF
UTF-16 BEFE FF
UTF-16 LEFF FE

Perché l'AT rifiuta i BOM

Windows-1252 non ha concetto di BOM. Lo schema ufficiale del SAF-T e il parser d'ingresso dell'AT si aspettano che il primo byte del file sia il < del prologo XML, non una firma Unicode.

Quando è presente un BOM, la dichiarazione XML passa il parsing ma il file viene rifiutato in ingresso senza un errore utile.

Come ci finisce un BOM

  • Salvare da Blocco note su Windows ("UTF-8 con BOM" è il default).
  • Alcuni ERP antepongono un BOM quando esportano XML "Unicode-aware".
  • Conversione manuale del file attraverso uno strumento che aggiunge una firma.

Come correggere

Rimuovi i primi 2 o 3 byte. Il corpo dell'XML resta invariato.

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

SAFTCheck rimuove il BOM automaticamente quando clicchi su "Correggi automaticamente e scarica".

Rilevare un BOM

Apri il file in un editor esadecimale. I primi tre byte devono essere 3C 3F 78 (ovvero <?x), non EF BB BF.

Correlato

Altre regole

Usiamo un cookie di sessione per l'accesso, un cookie locale per la preferenza linguistica e Tawk.to per il widget di chat (che imposta i propri cookie quando apri la chat). Google Analytics (GA4) si carica solo dopo la tua accettazione, con anonimizzazione dell'IP; nessun tracker pubblicitario. Vedi la nostra Informativa sulla privacy.