¿Cómo descargar un enlace con Unicode usando wget?

14

A veces, un enlace tiene caracteres Unicode, como http://www.example.com/файл.zip

Si apuntas a tu navegador, te pedirá que descargues el archivo como файл.zip. Pero si intenta hacerlo wget, el archivo viene con una mezcla de?, Codificación porcentual (como% D0% BB) y la (invalid encoding)cadena después del nombre del archivo.

¿Qué parámetros puedo agregar a wget, o cualquier otro truco de línea de comandos, para que se comporte como Chrome y Firefox y guarde el archivo exactamente como se especifica en el enlace representado, en este caso, como файл.zip?

La solución debería funcionar sin tener que escribirla explícitamente en el comando, por lo que una explícita wget -O файл.zip http://www.example.com/файл.zipno es una buena solución.

Me doy cuenta de que tan pronto como lo ejecutas wget http://www.example.com/файл.zip, intenta recuperar http://www.example.com/%D1%84%D0%B0%D0%B9%D0%BB.zip , es decir, convierte el enlace en porcentaje codificación, que puede ser la razón por la que lo guarda no representa el nombre de archivo "correctamente".

Publiqué una pregunta algo relacionada aquí , cuya respuesta puede o no ser de ayuda para esta.

Strapakowsky
fuente

Respuestas:

3

Puede usar curl en su lugar, como sigue

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

Lo guardará en файл.zip.

John Siu
fuente
23

Para wget, puedes usar:

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

si su sistema puede manejar UTF-8 u otra codificación correctamente.

Finalmente, si todavía le quedan esos símbolos% en su archivo descargado, puede usar el módulo Python urllib.unquote(filename)que reemplazará los escapes% xx por su equivalente de un solo carácter.

Balaji Purushotham
fuente
3
Esto debería marcarse como respuesta aceptada, si la combinación de esto y todo lo demás que la gente hace con wget (por ejemplo, descarga recursiva) se pudiera hacer en curl OP y probablemente todos los demás ya lo hubieran hecho.
Behrooz
Puede ser útil también --restrict-file-names=nocontrol si el enlace del archivo no es definitivo.
ipeacocks
0

No pude encontrar una manera de resolver este problema, wgetpero pude transferir con éxito los archivos con Midnight Commander .

Daniel Böhmer
fuente