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.

Jawaban:


3

Anda dapat menggunakan ikal sebagai berikut

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

Ini akan menyimpannya di файл.zip.


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.


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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.