web-dev-qa-db-ja.com

ファイル名を別のエンコーディングに変更するにはどうすればよいですか?

reiserfsマウントされたハードドライブに3種類のfile nameエンコーディングがあります:CP1251、KOI-8、UTF-8、およびASCII。すべてのエンコーディングを再帰的にUTF-8に変換する必要があります。ソースエンコーディングを検出してUTF-8に変換するユーティリティはありますか、Pythonスクリプトを作成する必要がありますか?

8
Pablo

Convmvを使用します。これは、異なるエンコーディング間でファイル名を変換するCLIツールです。これらのエンコーディングを(-f)から(-t)UTF-8に変換するには、次のようにします。

convmv -f CP1251 -t UTF-8 inputfile
convmv -f KOI-8  -t UTF-8 inputfile
convmv -f ASCII  -t UTF-8 inputfile

さらに、ファイルコンテンツを変換する場合は、iconv、CLIツールを使用して、ファイルコンテンツを異なるエンコーディングに変換します。これらのエンコーディングを(-f)から(-t)UTF-8に変換するには、次のようにします。

iconv -f CP1251 -t UTF-8 inputfile > outputfile
iconv -f KOI-8  -t UTF-8 inputfile > outputfile
iconv -f ASCII  -t UTF-8 inputfile > outputfile
10

いや。古いコードページシステムの大きな欠点の1つは、使用されているコードページを検出する方法がないことです。あなたは単純に先験的に知っている必要があります。どのファイルがどのエンコーディングを使用しているかがわかっている場合は、次のような名前を使用して名前を変換できます。

mv somefile `echo somefile | iconv -f CP1251 -t UTF-8`
1
psusi