Wget kullanarak unicode ile bağlantı nasıl indirilir?


14

Bazen bir bağda http://www.example.com/файл.zip gibi unicode karakterler bulunur

Tarayıcınızı ona yönlendirirseniz, dosyayı файл.zip olarak doğru bir şekilde indirmeniz istenir. Ancak bunu yapmaya çalışırsanız wget, dosya?, Yüzde kodlaması (% D0% BB gibi) ve (invalid encoding)dosya adından sonraki dize karışımı ile birlikte gelir .

Wget'e veya diğer komut satırı numaralarına hangi parametreleri ekleyebilirim, böylece Chrome ve Firefox gibi davranır ve dosyayı tam olarak işlenen bağlantıda belirtildiği gibi kaydeder - bu durumda файл.zip olarak?

Çözüm, komutta açıkça yazmak zorunda kalmadan çalışmalıdır, bu nedenle açık wget -O файл.zip http://www.example.com/файл.zipbir iyi bir çözüm değildir.

Çalıştırır wget http://www.example.com/файл.zipetmez http://www.example.com/%D1%84%D0%B0%D0%B9%D0%BB.zip dosyasını almaya çalıştığının , yani bağlantıyı yüzde olarak dönüştürdüğünün farkındayım. kodlama, bu onu kaydetmesinin nedeni dosya adını "düzgün" yapmaz.

Burada , cevabı bu konuda yardımcı olabilecek veya olmayabilecek biraz ilgili bir soru yayınladım .

Yanıtlar:


3

Bunun yerine aşağıdaki gibi kıvırmayı kullanabilirsiniz

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

Bunu файл.zip'e kaydedecektir.


23

Wget için şunları kullanabilirsiniz:

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

sisteminiz UTF-8 veya başka bir kodlamayı düzgün işleyebiliyorsa.

Son olarak, indirilen dosyanızda hala% semboller kaldıysa, urllib.unquote(filename)% xx kaçışlarını tek karakter eşdeğeriyle değiştirecek Python modülünü kullanabilirsiniz .


3
Bu kabul edilen cevap olarak işaretlenmelidir, eğer bu ve insanların wget ile yaptığı her şey (örneğin özyinelemeli indirme) kıvrılma OP'de yapılabilir ve muhtemelen herkes zaten bunu yapardı.
Behrooz

--restrict-file-names=nocontrol Dosya bağlantısı nihai değilse de yararlı olabilir .
ipeacocks

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.