Rejeição 402: XML da área de dados com codificação diferente de UTF-8

Descrição oficial da SEFAZ: XML da área de dados com codificação diferente de UTF-8

O que significa

A SEFAZ exige que o XML da NF-e esteja codificado em UTF-8, e o arquivo enviado veio em outra codificação.

Por que acontece

Normalmente o XML foi gerado ou regravado em ISO-8859-1 ou Windows-1252, ou a declaração do cabeçalho diz UTF-8 mas os bytes do arquivo estão em outra codificação — o que costuma acontecer quando o arquivo passa por um editor de texto, por um banco de dados com collation diferente ou por uma manipulação manual depois de gerado.

Como resolver

Gere ou converta o XML em UTF-8 de verdade, não apenas trocando a declaração do cabeçalho. Verifique se acentos e cedilhas aparecem corretos ao abrir o arquivo como UTF-8. Como qualquer alteração no XML invalida a assinatura, assine de novo depois da conversão e retransmita.

Como evitar

Nunca edite ou regrave o XML fora do sistema emissor, e garanta UTF-8 em toda a cadeia de geração e transporte.