wgetを使用してUnicodeでリンクをダウンロードする方法は?


14

リンクには、http://www.example.com/файл.zipなどのUnicode文字が含まれている場合があります

ブラウザを指定すると、ファイルをфайл.zipとしてダウンロードするように適切に指示されます。ただし、で実行しようとするとwget、ファイルには?、パーセントエンコーディング(%D0%BBなど)、および(invalid encoding)ファイル名の後の文字列が混在します。

wgetやその他のコマンドライントリックに追加できるパラメーターは、ChromeおよびFirefoxとして動作し、レンダリングされたリンクで指定されたとおりにファイルを保存します(この場合はфайл.zipとして)。

このソリューションは、コマンドに明示的に記述する必要なく機能するはずwget -O файл.zip http://www.example.com/файл.zipです。したがって、明示的なソリューションは適切なソリューションではありません。

実行wget http://www.example.com/файл.zipするとすぐにhttp://www.example.com/%D1%84%D0%B0%D0%B9%D0%BB.zipを取得しようとする、つまり、リンクをパーセントに変換することを認識していますエンコード、これが保存する理由かもしれませんが、ファイル名を「適切に」レンダリングしません。

ここいくらか関連する質問を投稿しましたが、その答えはこの質問に役立つ場合とそうでない場合があります。

回答:


3

次のように、代わりにcurlを使用できます

curl -O http://www.example.com/файл.zip

файл.zipに保存します。


23

wgetでは、次を使用できます。

wget http://www.example.com/файл.zip --restrict-file-names=nocontrol

システムがUTF-8またはその他のエンコードを適切に処理できる場合。

最後に、ダウンロードしたファイルにこれらの%記号が残っている場合は、Pythonモジュールurllib.unquote(filename)を使用して、%xxエスケープを同等の単一文字に置き換えることができます。


3
これは受け入れられた回答としてマークする必要があります。これとwgetで行う他のすべて(たとえば再帰的にダウンロードする)の組み合わせをcurl OPで行うことができ、おそらく他のすべての人が既にそれを行っているでしょう。
-Behrooz

--restrict-file-names=nocontrol ファイルリンクが最終的なものでない場合にも役立ちます。
ipeacocks

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.