'|'的奇怪InvalidURIError字符?

时间:2014-02-25 04:42:57

标签: ruby uri

好的,所以我的情况很简单:

代码:

require 'open-uri'

url = "http://en.wikipedia.org/w/api.php?action=query&format=xml&titles=Italy|France&prop=revisions&rvprop=content";
xml = open(url).read

设置titles时,例如Italy,它运行正常,但将其设置为Italy|France似乎会导致问题。 (据说它的问题是|字符?)

以下是错误:

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/uri/common.rb:176:in `split': bad URI(is not URI?): http://en.wikipedia.org/w/api.php?action=query&format=xml&titles=France|Italy&prop=revisions&rvprop=content (URI::InvalidURIError)
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/uri/common.rb:211:in `parse'
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/uri/common.rb:747:in `parse'
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/open-uri.rb:33:in `open'
    from test.rb:41:in `<main>'

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

你可以使用

encodeURIComponent()

<强>参见: Unescape special characters correctly from the URL in Rails 3.0.3

还可以尝试:

CGI.escape(url);