私はconvmvを使ってロシアのzipファイルのファイル名をUTF-8に変換しようとしています。元のファイル名: "æ óá¡¿½¡δ⁄ áα«⁄áЄ«¼.jpg"(æ\ óá¡¿½¡δ⁄\ áα«¼áЄ«¼.jpg (スラッシュを含む))
アナライザ(https://2cyr.com/decode/?lang=en) CP866+をCP437と表示するソースエンコーディングが検出され、必須 С ванильным ароматом.jpg に正常にデコードされました。
私の質問は、正しくデコードするようにconvmvをどのように設定しますか?の場合、convmv -f cp866 -t utf-8 filename
「すでにUTF-8」と表示され、--nosmartモードでは横説説が発生します。
答え1
一度にconvmv
1レベルのバグのみを修正できます。特定のファイルがより複雑です。もともとcp866でしたが、ある時点でUTF-8に変換されていましたが、その変換に関係なく、元々はcp437と仮定して変換が間違っていました。この問題を解決するには、次を2回実行する必要がありますconvmv
。
convmv -f utf-8 -t cp437 --notest 'æ óá¡¿½∞¡δ¼ áα«¼áΓ«¼.jpg'
convmv -f cp866 -t utf-8 --notest $'\x91 \xa2\xa0\xad\xa8\xab\xec\xad\xeb\xac \xa0\xe0\xae\xac\xa0\xe2\xae\xac.jpg'
2番目のコマンドでは、名前をエスケープする必要がありました。このタスクをまとめて実行している場合、またはこのタスクを処理したくない場合は、次のようなものを使用するか、*.jpg
影響を受けるすべてのファイルを独自のディレクトリに配置して-r
オプションを使用できますconvmv
。