Issue #9806 has been updated by Jonathan Mukai.


It looks like URI.encode/escape was deprecated in favor of either CGI.escape or URI.encode_www_form_component per https://github.com/ruby/ruby/commit/238b979f1789f95262a267d8df6239806f2859cc and some discussion here: https://www.ruby-forum.com/topic/207489

Both options give you the output you want.

However, I'm sure there's plenty of code hanging around that uses URI.escape. I wonder what the policy is for updating deprecated methods like this?

Johnny

----------------------------------------
Bug #9806: URI#encode doesn't encode characters '[' and ']'.  They should be encoded as %5B and %5D respectively.
https://bugs.ruby-lang.org/issues/9806#change-46795

* Author: Charles Leu
* Status: Open
* Priority: Normal
* Assignee: 
* Category: 
* Target version: 
* ruby -v: 2.2.0 and prior versions as well
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN
----------------------------------------
The subject says it all.

IRB session demonstrating the problem:
charlez$ irb
head :001 > RUBY_VERSION
 => "2.2.0"
head :002 > require 'uri'
 => true
head :003 > my_str = '[ futsal club ]'
 => "[ futsal club ]"
head :004 > URI.encode(my_str)
 => "[%20futsal%20club%20]"
head :005 >

Note: Testing using JavaScript function encodeURI('[ futsal club ]') produces "%5B%20futsal%20club%20%5D" which is the correct result.



-- 
https://bugs.ruby-lang.org/