encoding.declaration
Dichiarazione di codifica XML (Windows-1252)
L'AT richiede la codifica Windows-1252. Le dichiarazioni UTF-8 vengono rifiutate silenziosamente.
Cosa richiede l'AT
I file SAF-T (PT) devono dichiarare e utilizzare la codifica Windows-1252 (CP-1252). Sia la dichiarazione nel prologo XML che il contenuto in byte devono corrispondere.
<?xml version="1.0" encoding="Windows-1252"?>
Perché i file falliscono
ERP stranieri e strumenti moderni usano UTF-8 di default. L'XML prodotto è ben formato; lo schema convalida; il file passa la maggior parte dei validatori. Ma l'AT lo rifiuta in silenzio all'ingresso, senza un messaggio di errore utile.
Il disallineamento si presenta in due varianti:
- Dichiarazione dice UTF-8 + byte sono UTF-8 — l'intero file è sbagliato dal punto di vista dell'AT.
- Dichiarazione dice Windows-1252 + byte sono ancora UTF-8 — accade quando qualcuno modifica a mano solo il prologo. I caratteri accentati diventano spazzatura quando l'AT li decodifica.
Come correggere
- Transcodifica il corpo del file da UTF-8 a Windows-1252.
- Aggiorna la dichiarazione XML per farla corrispondere:
encoding="Windows-1252".
L'ordine conta — modifica solo la dichiarazione e spedisci spazzatura; modifica solo i byte e il parser rifiuta la codifica dichiarata.
Auto-fix
SAFTCheck esegue entrambi i passi con un clic. Il file corretto che scarichi contiene gli stessi dati, transcodificati byte per byte, con il prologo riscritto. I caratteri accentati (ç, ã, é, ó) diventano byte singoli nell'intervallo 0xA0–0xFF, come gli strumenti dell'AT si aspettano.
Verifica della correzione
Su Linux/macOS, file my.xml dovrebbe restituire qualcosa come "Non-ISO extended-ASCII text" o "ISO-8859 text", non "UTF-8 Unicode". In un editor esadecimale, ogni byte accentato dev'essere un singolo byte 0xA0–0xFF, non una sequenza con prefisso 0xC3.
Correlato
- BOM a inizio file — l'altro rifiuto silenzioso di codifica.
- Guida: come correggere l'errore di codifica UTF-8 del SAF-T in Portogallo