SAFTCheck

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.
  • Codifica mista: parte del testo è in UTF-8 e parte in Windows-1252, di solito dopo aver unito più esportazioni. SAFTCheck lo segnala come encoding.mixed; non si può correggere automaticamente senza rischiare caratteri errati, quindi esporta di nuovo il file.

Come correggere

  1. Transcodifica il corpo del file da UTF-8 a Windows-1252.
  2. 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. I caratteri che non esistono in Windows-1252 (ad esempio le lettere cirilliche) vengono scritti come riferimenti a caratteri XML, come &#x418;, quindi non si perde nulla.

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

Altre regole