Charset e encoding: a causa do mojibake em XML fiscal

Charset e encoding respondem perguntas diferentes, e quando o encoding declarado não bate com os bytes reais o resultado é mojibake — acentos virando sequências estranhas. Entenda UTF-8, ISO-8859-1 e Windows-1252 e como diagnosticar o problema.

Charset & Encoding

Codificação, Segurança & Caracteres

Os dois termos são próximos, mas respondem perguntas diferentes:

Charset (conjunto de caracteres)
A tabela que diz qual número representa qual caractere — ex.: no charset UTF-8, "Ã" é um número diferente do que no charset ISO-8859-1.
Encoding (codificação)
A regra de como esses números viram bytes de fato gravados ou transmitidos. UTF-8 é ao mesmo tempo um charset e um encoding: representa cada caractere em 1 a 4 bytes.

Quando o encoding declarado não bate com o encoding real dos bytes, o resultado é o famoso mojibake: acentos viram sequências de caracteres estranhas ("SÃO PAULO" exibido como "SÃO PAULO"). É um dos erros mais comuns — e mais silenciosos — em integração fiscal, porque o arquivo abre normalmente, só o conteúdo textual vem corrompido.

Na prática: os schemas de NFe, CT-e e NFS-e atuais exigem UTF-8, mas sistemas legados e exportações de planilha ainda costumam gerar ISO-8859-1/Latin-1 ou Windows-1252 — a diferença entre essas duas últimas está sobretudo em alguns símbolos de pontuação (aspas curvas, travessão). A declaração <?xml version="1.0" encoding="UTF-8"?> no topo do XML e o cabeçalho HTTP Content-Type: application/xml; charset=UTF-8 precisam bater com os bytes reais do arquivo — se um XML é gerado em Windows-1252 mas declarado como UTF-8 (ou vice-versa), o autorizador rejeita ou, pior, aceita com o conteúdo corrompido.

Use o detector de charset para descobrir a codificação real de um arquivo antes de assumir qual ela é.

Aplique o conceito nas ferramentas.

As ferramentas de JSON, XML, YAML, TOON, CSV, Base64, caracteres especiais e detecção de charset rodam localmente no navegador, sem enviar o seu documento fiscal para nenhum servidor.

Conteúdo de referência gratuito — sem necessidade de login.