From: charlez.leu@... Date: 2014-05-06T21:13:54+00:00 Subject: [ruby-core:62431] [ruby-trunk - Bug #9806] URI#encode doesn't encode characters '[' and ']'. They should be encoded as %5B and %5D respectively. 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/