Mojibakedファイルの回復

Mojibakedファイルの回復

最近、UTF-8とISO-Latin-1の間の変換時に内容が完全に焼かれたいくつかの破損したファイルが見つかりました。このファイルをどのように回復できますか?

関連する破損したテキストを生成するプロセスは次のとおりです。

  1. 元のテキスト「ó」はUTF-8(0xC3B3)として保存されます。
  2. エンコードされたバイト(0xC3および0xB3)は、ISO-Latin-1文字「à」および「3」として解釈されます。
  3. これらの文字はUTF-8表現(0xC383および0xC2B3)として保存されます。

これでファイルにバイトが含まれますC3 83 C2 B3。これにより、元の文字列 "ó"を再構成する必要があります。

このような(または同様の)種類の破損したファイルを修復する方法は?

答え1

iconv -f utf8 -t latin1問題を解決する必要があります。

たとえば、

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

デフォルトでは、iconvはLatin1-> UTF8変換をキャンセルし、以前の「latin1」(以降はUTF8として扱われます)を残します。

関連情報