6

我正在寻找一种方便且实用的方法来将编码值添加到 Ruby 中的 URL 查询字符串。目前,我有:

require 'open-uri'

u = URI::HTTP.new("http", nil, "mydomain.example", nil, nil, "/tv", nil, "show=" + URI::encode("Rosie & Jim"), nil) 

p u.to_s # => "http://mydomain.example/tv?show=Rosie%20&%20Jim"

这不是我要找的,因为我需要 get "http://mydomain.example/tv?show=Rosie%20%26%20Jim",这样该show=值就不会被截断。

Open::URI 是否有另一种方法可以做到这一点?如果没有,是否可以使用任何其他标准 Ruby 或 gem 来完成?

4

2 回答 2

10

尝试使用CGI::escape而不是URI::encode. 文档在这里

于 2012-02-09T16:55:16.387 回答
8

URI.encode_www_form效果很好,更方便添加多个参数

q = URI.encode_www_form("show" => "Rosie & Jim", "series" => "3", "episode" => "4")
u = URI::HTTP.new("http", nil, "mydomain.example", nil, nil, "/tv/ragdoll", nil, q, nil)
于 2012-02-09T17:09:24.273 回答