diff options
author | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-03-22 11:20:03 +0000 |
---|---|---|
committer | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-03-22 11:20:03 +0000 |
commit | 234a30459cdae6aa7da6e28a1082d9c11f315696 (patch) | |
tree | 397d1b3f4deb23f81ee269b125b8154dde253404 /lib | |
parent | b9881083f14f853a208f8e097782cd2a97d61497 (diff) | |
download | ruby-234a30459cdae6aa7da6e28a1082d9c11f315696.tar.gz |
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
Diffstat (limited to 'lib')
-rw-r--r-- | lib/uri/rfc2396_parser.rb | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/lib/uri/rfc2396_parser.rb b/lib/uri/rfc2396_parser.rb index a6e5df91f9..6a2d819152 100644 --- a/lib/uri/rfc2396_parser.rb +++ b/lib/uri/rfc2396_parser.rb @@ -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) |