Bagaimana cara mengunduh tautan dengan unicode menggunakan wget?

14

Terkadang sebuah tautan memiliki karakter unicode di dalamnya, seperti http://www.example.com/файл.zip

Jika Anda mengarahkan browser Anda ke sana, itu akan meminta Anda untuk mengunduh file sebagai файл.zip. Tetapi jika Anda mencoba melakukannya dengan wget, file datang dengan campuran?, Persen pengkodean (seperti% D0% BB) dan (invalid encoding)string setelah nama file.

Parameter apa yang dapat saya tambahkan ke wget, atau trik baris perintah lainnya, sehingga berperilaku sebagai Chrome dan Firefox dan menyimpan file persis seperti yang ditentukan dalam tautan yang diberikan - dalam kasus ini, sebagai файл.zip?

Solusinya harus bekerja tanpa harus menuliskannya secara eksplisit dalam perintah, jadi eksplisit wget -O файл.zip http://www.example.com/файл.zipbukanlah solusi yang baik.

Saya menyadari bahwa segera setelah Anda menjalankannya wget http://www.example.com/файл.zipmencoba mengambil http://www.example.com/%D1%84%D0%B0%D0%B9%D0%BB.zip , yaitu, itu mengubah tautan ke persen encoding, yang mungkin menjadi alasan mengapa menyimpannya tidak membuat nama file "dengan benar".

Saya memposting pertanyaan yang agak terkait di sini , yang jawabannya mungkin atau mungkin tidak membantu untuk yang satu ini.

Strapakowsky
sumber

Jawaban:

3

Anda dapat menggunakan ikal sebagai berikut

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

Ini akan menyimpannya di файл.zip.

John Siu
sumber
23

Untuk wget, Anda dapat menggunakan:

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

jika sistem Anda dapat menangani UTF-8 atau penyandian lainnya dengan benar.

Terakhir, jika Anda masih memiliki% simbol yang tersisa di file yang Anda unduh, Anda dapat menggunakan modul Python urllib.unquote(filename)yang akan menggantikan% xx escapes dengan ekivalen satu karakternya.

Balaji Purushotham
sumber
3
Ini harus ditandai sebagai jawaban yang diterima, Jika kombinasi ini dan segala sesuatu yang dilakukan orang dengan wget (mis. Mengunduh secara berulang) dapat dilakukan dalam curl OP dan mungkin semua orang sudah melakukannya.
Behrooz
Dapat bermanfaat juga --restrict-file-names=nocontrol jika tautan file belum final.
ipeacocks
0

Saya tidak dapat menemukan cara untuk mengatasi masalah ini dengan wgettetapi bisa berhasil mentransfer file dengan Midnight Commander .

Daniel Böhmer
sumber