Estou construindo um script para extrair alguns dados de um site com codificação de caracteres quebrada:
- O cabeçalho html afirma que é iso-8859-1, mas não é
wget
ting o arquivo me mostra que na verdade é utf-8, mas com caracteres errados- A engenharia reversa me mostra que alguém conseguiu usar a página de código do Windows 1252 como código unicode!
Assim, por exemplo, o backtick é 0x91 na página de código 1252 e é U+0091 nesta página. Esquisito. Surpreendentemente, os navegadores da web parecem ser capazes de reparar isso automaticamente.
Minha pergunta: Qual ferramenta pode me ajudar a limpar essa bagunça? (Não à mão! Este é um site dinâmico com centenas de páginas e eu vi pelo menos seis codificações falsas diferentes.)
Dependendo do que você quer dizer com "Não à mão",
iconv
pode ser útil para sua tarefa.Na minha experiência, o iconv funciona mesmo se você tiver que lidar com codificações erradas. Por exemplo, você pode dizer ao iconv que os dados de entrada são codificados em utf-8, mesmo que sejam iso-8859, para que o iconv aja como se a entrada fosse utf-8. Dessa forma, você pode reparar dados codificados incorretamente.
Como o iconv pode funcionar como um filtro, você pode encadeá-lo com algo como
curl
. O encadeamento comwget
deve funcionar também, quando você usa--output-document -
.Pelo que sei, o iconv não é capaz de detectar/adivinhar a codificação de entrada correta. Mas dependendo de quão confusos são seus dados de entrada, isso pode ser "impossível" de qualquer maneira, se o site tiver (muito) muitos tipos diferentes de codificação errada/misturada. Se todo o site estiver bagunçado da mesma maneira, você poderá consertá-lo.