advpl-encodinglisted
Install: claude install-skill JoniPraia/plugadvpl
# advpl-encoding — cp1252 / utf-8 preserve-by-default
Fontes ADVPL/TLPP em projetos Protheus reais misturam dois encodings:
- **`.prw` / `.prx` clássicos** → **cp1252 (Windows-1252)** — padrão histórico, herdado do Clipper.
- **`.tlpp` moderno** → **UTF-8** é suportado e recomendado pela TOTVS para código novo.
Em clientes grandes essas duas extensões coexistem no mesmo repositório. Algumas codebases legadas chegam a ter `.prw` em UTF-8 (raro, mas existe). **A regra é: preserve o encoding detectado, nunca normalize por conta própria.**
## Quando usar
- Antes de qualquer `Edit` ou `Write` em `.prw`, `.prx`, `.tlpp`.
- Quando o usuário menciona "acento errado", "ç", "ã", "caractere quebrado", "mojibake", "encoding".
- Quando ler um arquivo via `Read` e ver `ç` ou `ã` no output (sinal de cp1252 lido como utf-8).
- Antes de rodar `/plugadvpl:ingest` em base nova (verifique a política).
- Em REST/WebService onde XML/JSON entra UTF-8 e o fonte é cp1252.
- Em scripts auxiliares (instalador `.ps1`, `.sh`) que vão ser lidos por terminal cp1252.
## Caracteres que tipicamente quebram (mojibake)
Ao salvar cp1252 como UTF-8 (ou vice-versa) sem decodificar corretamente, estes caracteres viram lixo:
| Char cp1252 | Byte cp1252 | Lido como UTF-8 (mojibake) |
|-------------|-------------|------------------------------|
| `ç` | `0xE7` | `ç` |
| `ã` | `0xE3` | `ã` |
| `á` | `0xE1` | `á`