Recuperando Arquivos Mojibaked

1

Recentemente, encontrei vários arquivos quebrados, cujo conteúdo foi bem elaborado em conversões entre o UTF-8 e o ISO-Latin-1. Como posso reparar esses arquivos?

O processo que criou o texto quebrado em questão foi assim:

  1. O texto original, "o", foi salvo como UTF-8 ( 0xC3B3 ).
  2. Os bytes codificados ( 0xC3 e 0xB3 ) foram interpretados como caracteres ISO-Latin-1, "Ã" e "³".
  3. Esses caracteres foram salvos como suas representações UTF-8 ( 0xC383 e 0xC2B3 ).

O arquivo agora contém os bytes C3 83 C2 B3 . A partir disso, preciso reconstruir a string original, "ó".

Como posso reparar arquivos com esse tipo de corrupção (ou semelhante)?

    
por AJMansfield 01.04.2014 / 18:22

1 resposta

1

iconv -f utf8 -t latin1 deve corrigir isso.

Por exemplo:

echo 'C3 83 C2 B3' | xxd -p -r ; echo                             # ³ is C2 B3; suspect typo in your question
ó                                                                # confirms xxd -p -r works
echo 'C3 83 C2 B3' | xxd -p -r | iconv -f utf8 -t latin1 ; echo
ó                                                                 # got the ó back

Basicamente, o iconv desfaz a conversão de Latin1- > UTF8, deixando-o com o "latin1" que você tinha antes (que então você trata como UTF8).

    
por 01.04.2014 / 18:22