Encoding UTF-8 quebrado em fornecedor (mojibake Navega��o VJB) #9

Open
opened 2026-04-30 04:04:17 -03:00 by navigator · 0 comments
Owner

Contexto

Alguns nomes de fornecedor no DB estão com mojibake — bytes UTF-8 lidos como Latin-1 e re-encodados:

  • Navega��o VJB (deveria ser Navegação VJB)
  • BRASOFTWARE INFORM�TICA LTDA (deveria ser BRASOFTWARE INFORMÁTICA LTDA)

Causa provável

Algum scraper antigo (provavelmente TCE-SP que usa CSV) lê com encoding errado e grava no Postgres já corrompido.

Tarefas

  • Identificar qual scraper grava com encoding errado (grep -nE "encoding=|charset=|cp1252|latin" scripts/scraper_*.py)
  • Verificar psycopg2 client_encoding em todos os scripts (deveria ser UTF8 sempre)
  • Script de reparo: detectar mojibake (fornecedor LIKE '%�%') e tentar bytes(s, 'latin-1').decode('utf-8') para inverter
  • Quantificar impacto: SELECT COUNT(DISTINCT fornecedor) FROM contratos WHERE fornecedor LIKE '%�%'
## Contexto Alguns nomes de fornecedor no DB estão com mojibake — bytes UTF-8 lidos como Latin-1 e re-encodados: - `Navega��o VJB` (deveria ser `Navegação VJB`) - `BRASOFTWARE INFORM�TICA LTDA` (deveria ser `BRASOFTWARE INFORMÁTICA LTDA`) ## Causa provável Algum scraper antigo (provavelmente TCE-SP que usa CSV) lê com encoding errado e grava no Postgres já corrompido. ## Tarefas - [ ] Identificar qual scraper grava com encoding errado (`grep -nE "encoding=|charset=|cp1252|latin" scripts/scraper_*.py`) - [ ] Verificar `psycopg2` `client_encoding` em todos os scripts (deveria ser UTF8 sempre) - [ ] Script de reparo: detectar mojibake (`fornecedor LIKE '%�%'`) e tentar `bytes(s, 'latin-1').decode('utf-8')` para inverter - [ ] Quantificar impacto: `SELECT COUNT(DISTINCT fornecedor) FROM contratos WHERE fornecedor LIKE '%�%'`
Sign in to join this conversation.
No description provided.