如何使用 wget 下载 unicode 链接?

如何使用 wget 下载 unicode 链接?

有时链接中会包含 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,也就是说,它将链接转换为百分比编码,这可能是它保存时无法“正确”呈现文件名的原因。

我发了一个这里有一些相关的问题,其答案可能对这个问题有帮助,也可能没帮助。

答案1

对于 wget,你可以使用:

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

如果您的系统可以正确处理 UTF-8 或其他编码。

最后,如果您下载的文件中仍然有那些 % 符号,则可以使用 Python 模块urllib.unquote(filename)将 %xx 转义符替换为等效的单字符符号。

答案2

您可以改用 curl,如下所示

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

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

答案3

我找不到解决这个问题的方法,wget但可以成功传输文件午夜指挥官

答案4

我的回答与巴拉吉·普鲁肖坦

我必须添加一些.parse内容才能让它在 python 中运行:

import wget
wget.download(urllib.parse.unquote(url), destination_file)

相关内容