Issue #9806 has been updated by Charles Leu.


Notes:
* Per RFC 2396 section 2.4.3 "Data corresponding to excluded characters **must** be escaped in order to be properly represented within a URI."
* Per RFC 2396 section 2.2 reserved characters are ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" | "$" | ","
* Per URI::REGEXP::PATTERN reserved characters are  ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" | "$" | "," | "[" | "]"
* Thus there appears to be an inconsistency between RFC 2396 2.2 and URI::REGEXP::PATTERN
* After changing URI::REGEXP::PATTERN[:RESERVED] to omit characters '[' and ']',  URI.encode( '[ futsal club ]') produces "%5B%20futsal%20club%20%5D", which I believe is correct.

----------------------------------------
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-46578

* 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/