好的,所以我的情况很简单:
代码:
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>'
有什么想法吗?
答案 0 :(得分:1)
你可以使用
encodeURIComponent()
<强>参见:强> Unescape special characters correctly from the URL in Rails 3.0.3
还可以尝试:
CGI.escape(url);