R. download.file 使用带有特殊字符 (ñ) 的 link - Linux 与 Windows

R. download.file using link with special characters (ñ) - Linux vs Windows

我需要下载 URL 中包含的 zip 文件。如果你只是复制和粘贴在浏览器中完美工作。 linux中使用了以下代码,效果也很好。

link <- "http://www.catastro.minhap.es/INSPIRE/Buildings/32/32035-A GUDIÑA/A.ES.SDGC.BU.32035.zip"
tempzip <- "./temp/"
download.file(link, destfile = tempzip, method = "auto")

现在我也想在 windows 中下载该文件,但它不起作用。这是 Windows 中的错误:

> download.file(link, destfile = tempzip, method = "auto")
trying URL 'http://www.catastro.minhap.es/INSPIRE/Buildings/32/32035-A GUDIÑA/A.ES.SDGC.BU.32035.zip'
Error in download.file(ziplink, destfile = tempzip, method = "auto") : 
  cannot open URL 'http://www.catastro.minhap.es/INSPIRE/Buildings/32/32035-A GUDIÑA/A.ES.SDGC.BU.32035.zip'
In addition: Warning message:
In download.file(ziplink, destfile = tempzip, method = "auto") :
  cannot open URL 'http://www.catastro.minhap.es/INSPIRE/Buildings/32/32035-A GUDIÑA/A.ES.SDGC.BU.32035.zip': HTTP status was '404 Not Found'

如何使用相同的 link 在 windows 和 linux 中使用一个函数?

您可以使用 URLencode 转换为应该与平台无关的 url 转义字符串。以下结果是在 Windows PC 上获得的:

download.file(URLencode(link), destfile = "myfile.zip", method = "auto")
#> trying URL 'http://www.catastro.minhap.es/INSPIRE/Buildings/32/32035-
#> A%20GUDI%D1A/A.ES.SDGC.BU.32035.zip'
#> Content type 'application/x-zip-compressed' length 706283 bytes (689 KB)
#> downloaded 689 KB