有时链接中包含 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,即将链接转换为百分比编码,这可能是它保存它没有“正确”呈现文件名的原因。
小智 23
对于 wget,您可以使用:
wget http://www.example.com/????.zip --restrict-file-names=nocontrol
Run Code Online (Sandbox Code Playgroud)
如果您的系统可以正确处理 UTF-8 或其他编码。
最后,如果您下载的文件中仍有那些 % 符号,您可以使用 Python 模块urllib.unquote(filename)将 %xx 转义替换为其等效的单字符。
您可以使用curl代替,如下所示
\n\ncurl -O http://www.example.com/\xd1\x84\xd0\xb0\xd0\xb9\xd0\xbb.zip\nRun Code Online (Sandbox Code Playgroud)\n\n它将保存到 \xd1\x84\xd0\xb0\xd0\xb9\xd0\xbb.zip。
\n