Project

General

Profile

Actions

Bug #11506

closed

Changed behavior of URI.unescape between 2.1.5 and 2.2.3

Added by okkez (okkez _) over 8 years ago. Updated over 6 years ago.

Status:
Closed
Target version:
-
ruby -v:
ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-linux]
[ruby-core:<unknown>]

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>]
Actions #1

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).

Actions #3

Updated by naruse (Yui NARUSE) over 6 years ago

  • Status changed from Assigned to Closed
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0