[ruby] URI.encodeは "/" をエンコードしない対策
id:moro に教えてもらったので展開。
require "erb" require "uri" s = "まつむら" u = URI.encode(s) # => "%E3%81%BE%E3%81%A4%E3%82%80%E3%82%89" e = ERB::Util.u(s) # => "%E3%81%BE%E3%81%A4%E3%82%80%E3%82%89" URI.decode(u) # => "\343\201\276\343\201\244\343\202\200\343\202\211" URI.decode(e) # => "\343\201\276\343\201\244\343\202\200\343\202\211" s = "http://test.host/o# %$" u = URI.encode(s) # => "http://test.host/o%23%20%25$" e = ERB::Util.u(s) # => "http%3A%2F%2Ftest.host%2Fo%23%20%25%24" URI.decode(u) # => "http://test.host/o# %$" URI.decode(e) # => "http://test.host/o# %$"
ERB::Util.uを利用するとよいとのことです。
$とかもエンコードしない模様。