如何使用wget下载unicode链接?


14

有时,链接中包含Unicode字符,例如http://www.example.com/файл.zip

如果将浏览器指向它,它将正确提示您将文件下载为файл.zip。但是,如果您尝试使用进行操作wget,则文件中会包含?,百分比编码(例如%D0%BB)和(invalid encoding)文件名后的字符串。

我可以在wget或任何其他命令行技巧中添加哪些参数,使其表现为Chrome和Firefox,并完全按照呈现的链接中指定的格式保存文件-在这种情况下,保存为файл.zip?

该解决方案应该工作而不必在命令中显式地编写它,因此显式wget -O файл.zip http://www.example.com/файл.zip不是一个好的解决方案。

我意识到,只要您运行wget http://www.example.com/файл.zip它,它就会尝试检索http://www.example.com/%D1%84%D0%B0%D0%B9%D0%BB.zip,即它将链接转换为百分比编码,这可能是保存文件时未正确显示文件名的原因。

我在这里发布了一个与之相关的问题,该问题的回答可能对这个问题有帮助,也可能没有帮助。

Answers:


3

您可以改为使用curl,如下所示

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

它将保存到файл.zip。


23

对于wget,可以使用:

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

系统是否可以正确处理UTF-8或其他编码。

最后,如果下载的文件中还剩下%符号,则可以使用Python模块urllib.unquote(filename),将%xx转义符替换为它们的单个字符。


3
如果将其与人们使用wget进行的所有其他操作(例如,递归下载)相结合,则可以在curl OP中完成它,并且可能其他所有人也都已经做到了。
Behrooz

--restrict-file-names=nocontrol 如果文件链接不是最终链接,也可能很有用。
ipeacocks

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.