Caracteres especiais e escaping em XML fiscal

Caracteres especiais têm significado reservado na sintaxe de um formato e precisam ser escapados quando fazem parte do conteúdo. Entenda por que um & ou < não escapado quebra o XML da NF-e, as entidades do XML e como a regra muda por formato.

Caracteres Especiais

Codificação, Segurança & Caracteres

Caracteres especiais são aqueles que têm um significado reservado na sintaxe de um formato — e por isso precisam ser escapados (transformados numa forma segura) sempre que aparecem como parte do conteúdo, e não como parte da sintaxe. A regra muda por formato:

XML
& < > " ' são reservados. Viram &amp; &lt; &gt; &quot; &apos; quando fazem parte do conteúdo — ex.: "Comércio &amp; Cia" dentro de uma tag <xNome>.
JSON
Aspas duplas, barra invertida e caracteres de controle dentro de uma string viram \" \\ \n \t — sem isso, a string fecha antes da hora e o JSON fica inválido.
CSV
O próprio delimitador (, ou ;) e aspas dentro de um campo exigem envolver o campo em aspas duplas, e duplicar cada aspa interna ("" no lugar de ").
URL
Espaço, & = ? # e acentos viram percent-encoding — ex.: espaço vira %20, & vira %26 — para não serem confundidos com a sintaxe da própria URL.

O caso fiscal mais comum: uma razão social ou logradouro com & não escapado ("Comércio & Cia Ltda") quebra o parser XML no meio da tag, porque o parser lê & como o início de uma entity mal formada. O mesmo vale para acentos fora do charset declarado — não é bem um "caractere especial" na sintaxe, mas o efeito prático (documento rejeitado) é o mesmo; veja Charset & Encoding.

Use o identificador de caracteres especiais para encontrar caracteres inválidos ou não imprimíveis antes que eles quebrem um XML fiscal.

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.