【发布时间】:2013-05-20 08:05:43
【问题描述】:
我正在尝试使用 URI 创建 uri,但似乎不接受括号 ([]):
uri = URI.parse("http://example.com")
uri.path = URI.escape("/test[1].png")
URI::InvalidComponentError: bad component(expected absolute path component): /test[1].png
from /Users/something/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/uri/generic.rb:823:in `check_path'
知道怎么做吗?我应该不使用 URI 并在最后转义 uri 吗?
【问题讨论】:
-
是的,直接构建你的 URI。
-
原来
URI.escape脑死了,不同意URI关于需要编码的内容。它的来源是warn "#{caller(1)[0]}: warning: URI.escape is obsolete" if $VERBOSE,所以它显然已经过时并且不应该使用,但没有提到你应该使用什么。哇。您可以指定要编码的字符 (URI.escape("/test[1].png", '[]')),但您必须指定 所有字符。有CGI.escape,但它做的太多了。必须有一种理智的方法来完成这样一个简单的任务。