尝试使用带方括号的URL下载时,URI :: InvalidURIError

时间:2016-05-25 19:42:29

标签: ruby uri open-uri

我目前正在尝试下载此链接的图片:

http://z.mfcdn.net/store/manga/9/14-116.0/compressed/Bleach-14-116[manga-rain]._manga_rain_bleach_ch116_01.jpg

这会产生URI::InvalidURIError例外。

在阅读Stack Overflow之后,我尝试过(但失败了):

uri = URI.parse(URI.encode(url.strip))

safeurl = URI.encode(url.strip)

我确实知道这个问题与网页浏览器的关系更加友好"但我不知道如何让我的申请也这样做。

1 个答案:

答案 0 :(得分:2)

这是一种处理URL中无效字符的黑客方法:

u = 'http://z.mfcdn.net/store/manga/9/14-116.0/compressed/Bleach-14-116[manga-rain]._manga_rain_bleach_ch116_01.jpg'
fixed = u.gsub(/[\[\]]/) { '%%%s' % $&.ord.to_s(16) }

open(fixed)

这应该解决这个特殊问题。