From plugadvpl
Safely edit .prw files with cp1252 encoding in Claude Code by converting between UTF-8 and cp1252 to avoid corruption.
How this skill is triggered — by the user, by Claude, or both
Slash command
/plugadvpl:edit-prwarquivoThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
> 🚨 **CRÍTICO pro agente**: Read/Edit tools do Claude Code são **UTF-8 only**.
/plugadvpl:edit-prw🚨 CRÍTICO pro agente: Read/Edit tools do Claude Code são UTF-8 only. Quando lêem
.prwcp1252, bytes acentuados viram�(replacement char). Se você fizerEditnessa visão, oEditregrava o arquivo inteiro em UTF-8 — incluindo os�— corrompendo acentos não-editados.
Sempre que precisar editar .prw cp1252 com Read/Edit do Claude:
# 1. ANTES de qualquer Read/Edit — converte cp1252 → utf-8
plugadvpl edit-prw stage <fonte.prw>
# Cria <fonte>.bak com bytes cp1252 originais
# 2. Agora pode usar Read/Edit/Write livremente. Acentos preservados.
# (Arquivo está temporariamente em UTF-8 — NÃO compila ainda, é só pra editar)
# 3. DEPOIS de todas as edições — volta pra cp1252
plugadvpl edit-prw commit <fonte.prw>
# Acentos novos digitados durante edição viram bytes cp1252 corretamente
Quando a mudança é mecânica (find/replace):
$path = "Customizados\FOO.PRW"
$enc = [System.Text.Encoding]::GetEncoding(1252)
$txt = $enc.GetString([System.IO.File]::ReadAllBytes($path))
$txt = $txt -replace 'PADRAO_VELHO', 'PADRAO_NOVO'
[System.IO.File]::WriteAllBytes($path, $enc.GetBytes($txt))
Zero conversão, mas verboso pra refactor maior.
❌ NÃO RECOMENDADO. Mesmo editando só linhas sem �, o Edit regrava o
arquivo inteiro como UTF-8 e os � substituem acentos não-editados.
| Comando | Função |
|---|---|
edit-prw stage <arq> | cp1252 → utf-8 (cria .bak com original). Use ANTES de Read/Edit |
edit-prw commit <arq> | utf-8 → cp1252 (reverso). Use DEPOIS de editar |
edit-prw check <arq> | Diagnóstico: detecta encoding atual vs esperado pela extensão. Exit 1 se mismatch |
edit-prw open <arq> | Imprime conteúdo em UTF-8 puro (não modifica arquivo). Útil pra ler sem stage |
edit-prw save <arq> --from X --to Y | Conversão manual genérica (stage/commit são atalhos disso) |
.tlpp (já é UTF-8 nativo).prw em UTF-8 puro (raro mas existe — checa com edit-prw check)# Inspeciona primeiro
plugadvpl --format json edit-prw check Customizados/LJ7016_PE.PRW
# {"file": "...", "detected_encoding": "cp1252", "match": true, ...}
# Stage
plugadvpl edit-prw stage Customizados/LJ7016_PE.PRW
# ✓ Staged: ... agora em utf-8 (acentos preservados)
# ----- Aqui Claude usa Read/Edit normalmente -----
# Commit
plugadvpl edit-prw commit Customizados/LJ7016_PE.PRW
# ✓ Committed: ... volta em cp1252 (pronto pra compilar)
# Confirma round-trip
plugadvpl --format json edit-prw check Customizados/LJ7016_PE.PRW
# {"detected_encoding": "cp1252", "match": true, ...}
advpl-encoding — política geral de encoding em fontes ADVPL/TLPPcompile — após editar, compile pra validar (plugadvpl compile --mode appre <fonte>)npx claudepluginhub jonipraia/plugadvpl --plugin plugadvplSets encoding policy for ADVPL/TLPP source files: cp1252 for .prw/.prx, UTF-8 for .tlpp, preserve-by-default. Use before editing/writing sources or when seeing mojibake characters.
Ensures Delphi source files (.pas, .dfm, etc.) use UTF-8 with BOM encoding. Detects and fixes mojibake, missing BOM, and encoding problems.
Edits code via hash-anchored tilth MCP edits, replacing sed/awk/perl/patch and shell redirects. Supports surgical edits and ast-grep structural codemods spanning many files.