SAFTCheck
Documentação / encoding
encoding.declaration

Declaração de codificação XML (Windows-1252)

A AT exige a codificação Windows-1252. Declarações UTF-8 são rejeitadas silenciosamente.

O que a AT exige

Os ficheiros SAF-T (PT) têm de declarar e usar a codificação Windows-1252 (CP-1252). Tanto a declaração no prólogo XML como o conteúdo em bytes têm de corresponder.

<?xml version="1.0" encoding="Windows-1252"?>

Porque é que os ficheiros falham

ERPs estrangeiros e ferramentas modernas usam UTF-8 por defeito. O XML que produzem está bem formado; o esquema valida; o ficheiro passa pela maioria dos validadores. Mas a AT rejeita-o em silêncio à entrada, sem mensagem de erro útil.

A discrepância acontece em duas variantes:

  • Declaração diz UTF-8 + bytes são UTF-8 — o ficheiro inteiro está errado do ponto de vista da AT.
  • Declaração diz Windows-1252 + bytes ainda são UTF-8 — acontece quando alguém edita à mão apenas o prólogo. Os caracteres acentuados ficam em garbage quando a AT descodifica.

Como corrigir

  1. Transcodifique o corpo do ficheiro de UTF-8 para Windows-1252.
  2. Atualize a declaração XML para corresponder: encoding="Windows-1252".

A ordem importa — mude só a declaração e envia garbage; mude só os bytes e o parser recusa a codificação declarada.

Auto-fix

O SAFTCheck faz os dois passos num clique. O ficheiro corrigido que descarrega tem os mesmos dados, transcodificados byte a byte, com o prólogo reescrito. Caracteres acentuados (ç, ã, é, ó) ficam em bytes únicos na gama 0xA0–0xFF, como as ferramentas da AT esperam.

Verificar a correção

No Linux/macOS, file my.xml deve devolver algo como "Non-ISO extended-ASCII text" ou "ISO-8859 text", e não "UTF-8 Unicode". Num editor hexadecimal, cada byte acentuado deve ser um único byte 0xA0–0xFF, não uma sequência com prefixo 0xC3.

Relacionado

Outras regras

Usamos um cookie de sessão para autenticação, um cookie de idioma para a preferência linguística e o Tawk.to para o widget de chat ao vivo (que define os seus próprios cookies quando abre o chat). O Google Analytics (GA4) só é carregado depois de aceitar, com anonimização de IP; sem rastreadores publicitários. Consulte a nossa Política de Privacidade.