← ClaudeAtlas

advpl-encodinglisted

Política de encoding em fontes ADVPL/TLPP — cp1252 (Windows-1252) padrão para .prw/.prx clássico, utf-8 para .tlpp moderno, preserve-by-default. Funções ADVPL EncodeUTF8/DecodeUTF8/STRICONV pra conversão runtime. Use antes de Edit/Write em .prw/.prx/.tlpp, ou quando ver mojibake ("ç", "ã") em qualquer output.
JoniPraia/plugadvpl · ★ 12 · Code & Development · score 66
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` | `á`