web-dev-qa-db-ja.com

ファイル名の未知の文字セットから未知の文字を置き換えるベストプラクティス

つまり、Porträt.pdfというファイルがあります。

ただし、ファイル名は、次の例のようにubuntuで適切に表示されない文字セットで作成されました。

enter image description here

複数のファイル名があり、端末コマンドでコーディングされているためにこの特殊な文字を使用できない場合、ファイル名にそのような文字の名前を変更するベストプラクティスは何でしょうか。

6
NES

理論的には、ファイルで使用される文字エンコーディングを知るのは難しい場合がありますが、ほとんどの場合、エラーはUTF-8ではなくLatin1だけを使用しているWindowsシステムおよびプログラムから発生します。壊れたファイルがあるフォルダーでconvmv -f cp850 -t utf-8 *を引用符なしで実行し、試してください。

convmvパッケージがインストールされている必要があります)

7
user11842

いくつかの文字を取り除きたいだけなら、これを試すことができます:

rename "s/[^A-Za-z0-9-_]/_/g"

これは、文字、数字、ダッシュだけではないすべての文字をアンダースコアに置き換えます。 -nオプションを使用して実行し、ドライランで何が起こっているかを確認します。

1
Martin Ueding

最近のOSでは、ファイル名のエンコードにUTF-8を選択することが多いと思います。この意味で、ファイル名に米国以外の文字が含まれていても問題はありません。あなたが経験したことは、おそらく非UTF-8エンコーディングで作成されたファイル名の結果です。あなたがそれで何ができるかを伝えるのは非常に難しいです、それはまたあなたが望むものに依存します。正しいファイル名(たとえば、「Porträt.pdf」)が必要な場合は、最初に元のファイル名のエンコードを知っておく必要があります。次に、そのファイルを変換できます。膨大な量の非常に異なるエンコーディングがあるため、「推測」するのはそれほど簡単ではありません。

0
LGB