サブディレクトリで見えないUTF-8文字エンコードファイル名を変更する方法

サブディレクトリで見えないUTF-8文字エンコードファイル名を変更する方法

私のファイル名は次のとおりですKäyttöohje.pdf。この名前でなければなりませんKäyttöohje.pdf

以下を使用して、サブディレクトリ内のすべてのファイルを変換できます。

convmv -f utf8 -t iso-8859-1 -r --notest *

Käyttöohje.pdfに変換されますKäyttöohje.pdf

問題は、ファイルがすでにフォームかどうかです。Käyttöohje.pdf

Käyttöohje.pdf次に変換されたファイルK'$'\344''ytt'$'\366''ohje.pdf

上記のコマンドをどのように変更するか

  • Käyttöohje.pdfKäyttöohje.pdf(単独で残る)に変換されます
  • Käyttöohje.pdfまだ変換済みKäyttöohje.pdf

ベストアンサー1

エラーファイルがデュアルUTF-8でエンコードされているようです。

たとえば、äU+00E4 は次のようにエンコードされます。

  1. U+00E4 -> 0xc3 0xa4(UTF-8エンコーディング)
  2. 0xc3 -> 0xc3 0x83 (iso8859-1 Ã-> UTF-8), 0xa4 -> 0xc3 0xa4 (iso8859-1 ¤-> UTF-8) ここで、U+00E4 の UTF-8 エンコーディングの各バイトは次のように解釈されます。シングルバイト文字セット(ここではiso8859-1またはwindows-1252)で別の文字をエンコードし、UTF-8に再エンコードします。

したがって、convmv -f utf8 -t iso-8859-1それを使用するのは正しいです。ダブルエンコードされていないファイルを維持するには、特別なconvmvオプションがありますので、--fixdouble次のようにする必要があります。

convmv --fixdouble -f utf8 -t iso-8859-1 -r --notest .

専用セクションがあります。convmv手動:

デュアルUTF-8(または他の)エンコードされたファイル名を元に戻す方法

場合によっては、特定のファイル名が「二重エンコード」されている可能性があります。たとえば、ファイル名はすでにUTF-8でエンコードされていますが、誤って一部の文字セットをUTF-8に変換しました。逆にすれば、簡単に操作をキャンセルできます。ソース文字セットはUTF-8でなければならず、ターゲット文字セットは以前に誤って使用したソース文字セットでなければなりません。 "--fixdouble"オプションを使用すると、convmvは変換後もUTF-8でエンコードされたファイルのみを処理し、UTF-8以外のファイルに影響を与えないようにします。以前に「--notest」なしで変換して正しい結果が得られていることを確認する必要があります。 "--qfrom"オプションも役に立ちます。二重utf-8ファイル名を印刷すると問題が発生する可能性があるためです。端末 - 一般的に制御機能が含まれています。ターミナルウィンドウで興味深いタスクを実行できるシーケンス。誤って変換した文字セットがわからない場合は、「--qfrom」を使用することは、ファイル名を壊さずに必要なエンコーディングを見つけるのに最適な方法です。

ÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôiso8859-1(コードポイントU + 0000 U + 00FFを含む)でエンコードされたデュアルUTFファイルには、U + 00C2 - > U + 00F4()の範囲の1文字とU + 0080 -で構成される非ASCII文字シーケンスが含まれています含まれます。 > U + 00BFの範囲内の1つ以上の文字(U + 0080〜U + 009Fは制御文字と改行しないスペースです¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿)。特に、U + 00E0(上の最初のグループの小文字)の上の文字の後には、2番目のグループの少なくとも2つの文字が続く必要があることを考慮すると、これらのシーケンスは二重にエンコードされていないテキストに表示される可能性が比較的低いですconvmv --fixdouble。間違っています。

おすすめ記事