Por que meu JSON fica embaralhado? Correcao de codificacao Unicode

2024-12-01

Chines ou emoji quebrado apos colar resposta de API? Muitas vezes o JSON esta correto: RFC 8259 exige UTF-8 para troca entre sistemas; o problema costuma estar na decodificacao.

JSON e Unicode

Strings podem conter Unicode bruto ou escapes \uXXXX; ambos decodificam para os mesmos caracteres.

RFC 8259 exige UTF-8 quando JSON e trocado entre sistemas; salve arquivos locais tambem em UTF-8.

{
  "greeting": "Hello",
  "escaped": "\u0048\u0065\u006c\u006c\u006f",
  "emoji": "🎉"
}

Sintomas comuns

Pontos de interrogacao ou �: dados decodificados como Latin-1/GBK em vez de UTF-8. Se no banco esta bom mas na exportacao quebra, o charset de exportacao esta errado.

Escapes \u

Alguns serializadores geram escapes ASCII-safe; os dados parseados continuam Unicode correto. Corrija a codificacao do transporte, nao os escapes.

HTTP Content-Type

application/json nao define parametro charset no IANA; os bytes ainda devem ser UTF-8 segundo RFC 8259.

Corrija headers incorretos do servidor em vez de aplicar gambiarras no cliente.

Armadilhas de BOM

RFC 8259 proibe enviar BOM em JSON de rede; alguns parsers ignoram, mas nao dependa disso.

Salve arquivos .json em UTF-8 sem BOM e observe caracteres ocultos ao copiar do Notepad no Windows.

Checklist

Verifique bytes UTF-8, codificacao do editor, parse online correto e depois ajuste o consumidor com problema na cadeia.