Erro E1229: XML não está utilizando codificação UTF-8
Acentos e cedilhas só chegam inteiros em UTF-8.
O Erro E1229 acontece quando o XML enviado não está codificado em UTF-8.
Por que acontece o Erro E1229
A DPS não trafega como XML puro. Antes de sair, ela passa por duas etapas:
| Etapa | O que acontece |
|---|---|
| 1. Compressão | O XML é comprimido em GZip, para reduzir o tamanho |
| 2. Codificação | O resultado é convertido para base64, para caber num campo de texto |
Do outro lado, o Sistema Nacional desfaz o caminho: decodifica o base64, descomprime o GZip e só então lê o XML. Um erro em qualquer dessas etapas barra a nota antes de o conteúdo dela ser avaliado — não há nada de errado com o que você declarou, apenas com o pacote que o transportou.
UTF-8 é a única codificação aceita. Ela é o padrão da web e representa todos os caracteres do português — acentos, cedilha, til — de forma que qualquer sistema consegue ler.
O problema aparece com codificações antigas, como ISO-8859-1 ou Windows-1252, ainda comuns em sistemas legados e em arquivos gerados no Windows. Nelas, "São Paulo" e "José" ocupam bytes diferentes dos que o UTF-8 usa, e o Sistema Nacional lê caracteres corrompidos ou rejeita o documento.
| Codificação | Aceita |
|---|---|
| UTF-8 | Sim |
| ISO-8859-1, Windows-1252 | Não |
Há um detalhe que engana: declarar UTF-8 não é o mesmo que estar em UTF-8. Um arquivo pode trazer encoding="UTF-8" na primeira linha e ter sido gravado em outra codificação — a declaração é apenas um rótulo.
As causas mais comuns:
Arquivo gerado por sistema legado que grava em ISO-8859-1.
Declaração correta e conteúdo em outra codificação, o pior caso, porque parece certo.
Conversão feita no meio do caminho por uma ferramenta intermediária.
BOM no início do arquivo, que algumas implementações não toleram.
No Berga
DFe › NFSe — a codificação é responsabilidade do sistema.
Deixa que o Berga resolve gerando tudo em UTF-8 de ponta a ponta: nome com acento, cedilha em razão social e endereço com til chegam inteiros ao Sistema Nacional. Conheça o Berga.
Como resolver o Erro E1229
- 1Confirme que o arquivo está gravado em UTF-8, e não apenas declarado como tal.
- 2Havendo sistema legado na origem, converta antes de comprimir.
- 3Remova o BOM do início do arquivo.
- 4Reenvie.
Como evitar o Erro E1229
Padronize UTF-8 em toda a cadeia de geração. Uma conversão no meio do caminho desfaz o trabalho feito na origem.
Se o Erro E1229 continuar
Erros vizinhos: estrutura mal formada, falha na decodificação base64 e erro na assinatura, que a codificação também derruba.
Persistindo, abra um chamado informando o horário do envio.
Referência: Anexo I do leiaute da DPS e da NFS-e (SEFIN/ADN), Sistema Nacional NFS-e.