Actions
Bug #11506
closedChanged behavior of URI.unescape between 2.1.5 and 2.2.3
ruby -v:
ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-linux]
Description
Changed behavior of URI.unescape between 2.1.5 and 2.2.3. Why?
Is this change intended or not?
It breaks my application.
But I will use CGI.unescape
for my application, for now.
My test script here.
require "uri"
require "cgi/util"
URL = "http://example.com:80/?foo=bar&baz=qux&%E3%81%BB%E3%81%92=%E3%82%82%E3%81%92"
url = URI.parse(URL)
puts "-----------URI----------------"
url.query.split('&').each do |pair|
key, value = pair.split('=', 2).map{|v| URI.unescape(v) }
p [key, key.encoding]
p [value, value.encoding]
end
puts "-----------CGI----------------"
url.query.split('&').each do |pair|
key, value = pair.split('=', 2).map{|v| CGI.unescape(v) }
p [key, key.encoding]
p [value, value.encoding]
end
# erb doesn't have unescape method
Ruby 2.1.5
-----------URI----------------
["foo", #<Encoding:UTF-8>]
["bar", #<Encoding:UTF-8>]
["baz", #<Encoding:UTF-8>]
["qux", #<Encoding:UTF-8>]
["ほげ", #<Encoding:UTF-8>]
["もげ", #<Encoding:UTF-8>]
-----------CGI----------------
["foo", #<Encoding:UTF-8>]
["bar", #<Encoding:UTF-8>]
["baz", #<Encoding:UTF-8>]
["qux", #<Encoding:UTF-8>]
["ほげ", #<Encoding:UTF-8>]
["もげ", #<Encoding:UTF-8>]
Ruby 2.2.3
$ ruby a.rb
-----------URI----------------
["foo", #<Encoding:US-ASCII>]
["bar", #<Encoding:US-ASCII>]
["baz", #<Encoding:US-ASCII>]
["qux", #<Encoding:US-ASCII>]
["\xE3\x81\xBB\xE3\x81\x92", #<Encoding:US-ASCII>]
["\xE3\x82\x82\xE3\x81\x92", #<Encoding:US-ASCII>]
-----------CGI----------------
["foo", #<Encoding:UTF-8>]
["bar", #<Encoding:UTF-8>]
["baz", #<Encoding:UTF-8>]
["qux", #<Encoding:UTF-8>]
["ほげ", #<Encoding:UTF-8>]
["もげ", #<Encoding:UTF-8>]
Updated by nagachika (Tomoyuki Chikanaga) over 8 years ago
- Status changed from Open to Assigned
- Assignee set to naruse (Yui NARUSE)
It is related with r46491 for [Feature #2542] (support RFC 3986)?
I think it is intended change.
naruse san, how do you think?
Updated by naruse (Yui NARUSE) over 6 years ago
nagachika (Tomoyuki Chikanaga) wrote:
It is related with r46491 for [Feature #2542] (support RFC 3986)?
I think it is intended change.
naruse san, how do you think?
Yes.
You should use URI.decode_www_form(url.query)
.
Updated by naruse (Yui NARUSE) over 6 years ago
- Status changed from Assigned to Closed
Actions
Like0
Like0Like0Like0