Issue #9806 has been updated by Charles Leu.


Yusuke Endoh wrote:
> I'm unfamiliar with URI spec, but I guess RFC 2732 is related.
> 
> http://www.ietf.org/rfc/rfc2732.txt
> 
> > This document incudes an update to the generic syntax for Uniform
> > Resource Identifiers defined in RFC 2396 [URL].  It defines a syntax
> > for IPv6 addresses and allows the use of "[" and "]" within a URI
> > explicitly for this reserved purpose.
> 
> -- 
> Yusuke Endoh <mame / tsg.ne.jp>

FYI: Refer to the current W3.org BNF for URI syntax http://www.w3.org/Addressing/URL/5_URI_BNF.html

Note the statement 'The "national" and "punctuation" characters do not appear in any productions and therefore may not appear in URIs.'.  That statement is at odds with RFC 2732.

It appears that authors of the standards docs aren't always aware of, and/or consistent with, other standards docs.  Thus it is not surprising there is confusion regarding what is or isn't a valid URI encoding.

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

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