Come scaricare link con Unicode usando wget?


14

A volte un link contiene caratteri unicode, ad esempio http://www.example.com/файл.zip

Se si punta il browser ad esso, verrà richiesto correttamente di scaricare il file come файл.zip. Ma se provi a farlo con wget, il file viene fornito con un mix di?, Codifica percentuale (come% D0% BB) e la (invalid encoding)stringa dopo il nome del file.

Quali parametri posso aggiungere a wget o ad altri trucchi della riga di comando, in modo che si comporti come Chrome e Firefox e salvi il file esattamente come specificato nel link renderizzato - in questo caso, come файл.zip?

La soluzione dovrebbe funzionare senza doverlo scrivere esplicitamente nel comando, quindi un esplicito wget -O файл.zip http://www.example.com/файл.zipnon è una buona soluzione.

Mi rendo conto che non appena esegui wget http://www.example.com/файл.zip, tenta di recuperare http://www.example.com/%D1%84%D0%B0%D0%B9%D0%BB.zip , ovvero converte il link in percentuale codifica, che potrebbe essere il motivo per cui lo salva non rende il nome del file "correttamente".

Ho pubblicato qui una domanda in qualche modo correlata , la cui risposta può o meno essere di aiuto a questa.

Risposte:


3

Puoi usare invece l'arricciatura, come segue

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

Lo salverà su файл.zip.


23

Per wget, puoi usare:

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

se il tuo sistema è in grado di gestire correttamente UTF-8 o altre codifiche.

Infine, se hai ancora quei simboli% rimasti nel tuo file scaricato, puoi usare il modulo Python urllib.unquote(filename)che sostituirà% xx escape con il loro equivalente a carattere singolo.


3
Questo dovrebbe essere contrassegnato come risposta accettata, se la combinazione di questo e tutto il resto della gente con wget (es. Download ricorsivo) potrebbe essere fatta in curl OP e probabilmente tutti lo avrebbero già fatto.
Behrooz,

Può essere utile anche --restrict-file-names=nocontrol se il collegamento al file non è definitivo.
ipeacocks,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.