ruby - URI::InvalidURIError 尝试通过带方括号的 URL 下载时

标签 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)

我知道这个问题与网络浏览器更加“友好”有关,但我不知道如何让我的应用程序做到这一点。

最佳答案

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

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)

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

关于ruby - URI::InvalidURIError 尝试通过带方括号的 URL 下载时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37446259/

相关文章:

python - Ruby 2.1.5 和 RubyPython 0.6.3- RubyPython::InvalidInterpreter:指定了无效的解释器

ruby-on-rails - ActionController::UrlGenerationError: 错误没有路由匹配

ruby-on-rails - Capistrano 在部署时失败: Assets :使用 SSHKit::Command::Failed 预编译:rake 退出状态:1

ruby - Nokogiri、open-uri 和 Unicode 字符

ruby - 在 Ruby 中下载文件,重定向到带有空格的 URL

ruby-on-rails - 打开 ("url or file name")并要求 'open-uri' 无法在 Rails 上运行 ruby

ruby - 将 SSL 添加到连接

python - 是否可以在 AppEngine 上检索 uri block ?

haskell - 如何使用 Network.URI 在代码中表示静态 Haskell URI?

java - Spring不忽略文件扩展名