不明な8ビットファイルをutf8に変換する方法

不明な8ビットファイルをutf8に変換する方法

UbuntuのgEditで開くと、歪んで表示される.srtファイルがあります。だからそれを読むためにutf8に変換したいと思います。

どのエンコーディングが提供されているかを調べようとすると、次のようになります。

file -i x.srt 
x.srt: text/plain; charset=unknown-8bit

別の試みで、次のことがわかりました。

find .  -type f -print | xargs file
./x.srt:   Non-ISO extended-ASCII text, with CRLF line terminators

私もencaを試しました:

enca x.srt 
enca: Cannot determine (or understand) your language preferences.
Please use `-L language', or `-L none' if your language is not supported
(only a few multibyte encodings can be recognized then).
Run `enca --list languages' to get a list of supported languages.

そして

enca -L Persian  x.srt 
enca: Cannot determine (or understand) your language preferences.
Please use `-L language', or `-L none' if your language is not supported
(only a few multibyte encodings can be recognized then).
Run `enca --list languages' to get a list of supported languages.

だから、エンコーディングを知り、最終的に利用可能な形式に変換する方法を知りたいです。

ベストアンサー1

未知のエンコーディングを既知のエンコーディングに変換する安定した方法はありません。

あなたの場合、元のテキストがペルシャ語/ペルシャ語であることがわかっている場合は、可能なエンコード数を識別し、必要な出力が表示されるまでこれを繰り返すことができます。

クイックGoogle検索の結果標準的で信頼性の高いレガシーコンバータはありません。イランシステムエンコーディング、残りの唯一の普及した代わりはWindowsコードページ1256。私は含んでいたアラビアの馬主に説明の目的でここにあります(Farsiの実行可能な代替手段になるかもしれませんが)。

for encoding in cp1256 macarabic; do
    if iconv -f "$encoding" -t utf-8 inputfile >outputfile."$encoding"; then
        echo "$encoding: possible"
    else
        echo "$encoding: skipped"
        rm outputfile."$encoding"
    fi
done

(私のバージョンはiconv実際にMacArabicをサポートしていませんが、運が良く、他の変換ツールを試してみることもできます。)

生成された出力ファイルを調べて、それらの1つが適切であることを確認してください。

出力がどのように見えるかを知っている場合は、ファイル内の個々のバイトマッピングを見つけることもできます。最初のバイトが0x94であり、ﭖで読み取る必要があることがわかっている場合は、基本的にエンコードがイランシステム用であると判断したものです。この結論を確認するために、さらに数バイトをチェックしてください。このエンコーディングのWikipediaページには、すべての文字を含む表があります。明らかに、これは難しく、遅く、エラーが発生しやすいプロセスです。特に選択候補符号化が多い場合にはさらにそうである。

一部のエンコーディングでは、次のリストがあります。https://tripleee.github.io/8bit/- それ以外の場合は、Wikipediaのコーディングテーブルを見てください。

おすすめ記事