set UTF-8 if given URI string is ASCII
Now URI is normally UTF-8, and US-ASCII URI string is considered as escaped a UTF-8 string. https://github.com/rails/rails/issues/32294 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62897 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
b9881083f1
commit
234a30459c
@ -329,7 +329,9 @@ module URI
|
||||
# Removes escapes from +str+
|
||||
#
|
||||
def unescape(str, escaped = @regexp[:ESCAPED])
|
||||
str.gsub(escaped) { [$&[1, 2]].pack('H2').force_encoding(str.encoding) }
|
||||
enc = str.encoding
|
||||
enc = Encoding::UTF_8 if enc == Encoding::US_ASCII
|
||||
str.gsub(escaped) { [$&[1, 2]].pack('H2').force_encoding(enc) }
|
||||
end
|
||||
|
||||
@@to_s = Kernel.instance_method(:to_s)
|
||||
|
@ -50,6 +50,7 @@ class URI::TestParser < Test::Unit::TestCase
|
||||
p1 = URI::Parser.new
|
||||
assert_equal("\xe3\x83\x90", p1.unescape("\xe3\x83\x90"))
|
||||
assert_equal("\xe3\x83\x90", p1.unescape('%e3%83%90'))
|
||||
assert_equal("\u3042", p1.unescape('%e3%81%82'.force_encoding(Encoding::US_ASCII)))
|
||||
assert_equal("\xe3\x83\x90\xe3\x83\x90", p1.unescape("\xe3\x83\x90%e3%83%90"))
|
||||
end
|
||||
end
|
||||
|
Loading…
x
Reference in New Issue
Block a user