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 & < > " ' quando fazem parte do conteúdo — ex.: "Comércio & 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.