我正在使用递归方式从远程目录下载文件wget
,并且无论谁创建了文件夹和文件,都使用了特殊字符(例如è
或)Ó
,当我下载单个指定完整路径+文件名时,文件会以其名称正确下载,但是当我尝试使用该选项下载包含所有文件和目录的文件夹时,-r
文件名未正确编码或解码。
据我所知,文件名ascii
在请求中作为 发送,并且我的机器和服务器都UTF-8
对 进行了编码$PATH
,因此这也不应该是问题。
当 wget 创建文件时,è
文件名中的字符(我将使用它作为示例)将保存为\350
八进制字符代码,并显示为è
。 这种情况仅在我递归下载文件时发生,如果我使用完整的 URL 下载此文件,则文件名会正确显示。
我花了相当多的时间到处查找问答,并且我尝试了我所见过的所有方法,从设置--local-encoding
和--remote-encoding
到UTF-8
,使用--restrict-file-names=nocontrol
等等。
端口 21 和 22 已关闭,所以我无法通过 SCP 或 FTP 下载文件,很可能任何其他下载文件的协议都会出现相同的错误,但我愿意使用任何不常见的协议。
另外,我遇到的主要问题是,当我下载文件并尝试将它们复制到备份文件夹时,某些文件有时会由于文件名混乱而出现文件未找到的错误,现在我使用--restrict-file-names=ascii
并保留名称ascii
作为解决方法,但我需要将编码更改为UTF-8
,而且我无法在机器上安装任何应用程序,例如 convmv(老板的命令)。
这是我用来下载文件的命令:
wget --keep-session-cookies --cookies=on --no-check-certificate --restrict-file-names=nocontrol --convert-links --no-parent -r <URL>
这是通过递归下载单个文件与所有文件来保存文件名的方式:
OT14-004 CEIP Pins del Vallès.vsd
OT14-004 CEIP Pins del Vallès.vsd
CentOS Linux release 7.0.1406 (Core)
我正在使用装有此发行版和此 wget 版本的机器GNU Wget 1.14 built on linux-gnu