ディレクトリとファイル名のドイツ語ウムラウトのエンコードを修正(ü=u╠êなど)


13

ドイツ語のウムラウト(äüöÄÜÖß)のエンコードエラーがあるzipファイルがたくさんあります。これらは、filename.zipだけでなく、次のような含まれているディレクトリとファイルにも表示されます。

  • Fünf=Fu╠ênf
  • ラウバー=ラウゼウバー
  • Überfall=U╠êberfall

等々。通常Linuxを使用しますが、この問題のためにWindows7 VMも試してみましたが、同じエンコードが混乱します。Linuxでは、convmvとdetoxをいじりましたが、成功しませんでした。

使用するとき

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

「スキップ、すでにUTF-8」と表示されます。

これについて何か考えはありますか?


どのアンティークシステムを使用していますか?現在、すべての現在のLinuxディストリビューションはUTF-8を使用しています。
BatchyX

これはファイルシステムの問題でしょうか?おそらくUTFでマウントされていませんか?
テルドン

Linux Mint 13(カーネル3.2.0-23を使用したUbuntu 12.04 LTSベース)を使用しているため、これはアンティークとはほど遠いものです。また、すでに書いたように、Windows 7 VMでもそのファイルを試しました。ただし、zipファイルを作成した人が何を使用したかはもちろんわかりません。
サイダー

1
このエンコーディングは、ある種のDOSエンコーディングのようです。私はUTF8に問題がドイツ語のウムラウトをコード見れば通常は、A =äように見えるか、Ü= AOE
サイダー

@cider try find -type f -print0 |xargs -r -n1 -0 convmv -f WINDOWS-1252 -t UTF-8 --notest 現在のディレクトリから前方にファイルを検索し、各ファイルでconvmvを個別に実行します。ファイル名はヌル終了リストとしてエンコードされます。
マンウェ

回答:


2

「すでにUTF-8」という警告が表示されるのは、これらの文字列がすでにUTF-8になっているためです。「ü」文字はOSXスタイルでエンコードされ、「u」の後に「\ xCC」と「\ x88」の2バイトが続きます。これらの2バイトが一緒になって、結合分音符である\ u0308のUTF-8表現を構成します。

ここにリストされているコードページ437を見ると、\ xCC文字が "╠"で、\ x88文字が "ê"であることがわかります。

これらの文字シーケンスを表示するために使用しているものは何でも、UTF-8としてではなくCP437として解釈します。

あなたがルビーを読んだ場合、私のUTF-8端末で期待どおりに表示される簡単な証拠:

$ ruby -e 'puts "u\xCC\x88"' | iconv -f cp437 -t utf-8
ü
$ ruby -e 'puts "u\xCC\x88"'
ü

0

私の推測では、ファイルを解凍または操作しようとしているファイルシステムです。FAT32はウムラウトを好まないでしょう。フラッシュドライブ(または何を持っている)のオフに、これらのファイルをコピーしてみて、その後、種類の文字のファイル名が生成ものを見るためにzipファイルを解凍します。

NTFS(Windows)とExt4(Mint)の両方で、名前のエンコードに問題はありません。

FAT32システムでのzipファイル自体の名前エンコードは、適切なサポートファイルシステムにコピーするときに変更または修正されることはほとんどありませんが、解凍されたサブディレクトリは問題ないはずです。


0

まず、文字エンコーディングはそれ自体が地獄のセクションであることに注意してください。Windowsの世界では、UTF-8とM $の間には厄介な二元論が存在し、長い間愚かであり、ISO-8859(思いついた推測)を主張していました。前述のように、ほぼ確実にファイルシステムと関係があります。私の解決策は技術的なものではありませんが、長年私のために働いてきたものです:

ファイル名に関する私の個人的なアドバイスは常に同じです:英数字にダッシュ(-)およびアンダースコア(_)を加えたままにしてください。ウムラウトをae、ue、oeとして記述します。スペースやその他の特殊文字を使用しないでください。最初は少し不便ですが、予期しない場所での苦痛を大幅に軽減します。

サイドノートとして:はい、これは一種の厄介な「ハック」ですが、クロスプラットフォームで作業する場合、最後の共通点に戻る必要があります。文字エンコードのような基本的なものは難しい標準になると当然のことと思いますが、標準を入手するのは難しいことがわかります。このXKCDは非常にうまくまとめています


Mac、Windows、Linuxの間で(Syncthing経由で)ファイルを同期しようとすると(そして失敗すると)、ファイル名のエンコードの問題にうんざりします。私はあなたのアドバイスを採用しますが、トルコ語にはç、ş、ı、ğ、ü、öがあり、英数字で書くのは不便です。クラウドストレージの使用を控えたいのですが、この問題のためにそうする必要があります。
テオ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.