From: johnnymukai@... Date: 2014-05-18T11:23:36+00:00 Subject: [ruby-core:62660] [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 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/