From: robb+ruby@... Date: 2021-07-20T08:47:41+00:00 Subject: [ruby-core:104653] [Ruby master Bug#12235] URI.encode issue with square brackets Issue #12235 has been updated by robb (Robb Shecter). I just ran into this. My app is generating URLs which it cannot then parse. ---------------------------------------- Bug #12235: URI.encode issue with square brackets https://bugs.ruby-lang.org/issues/12235#change-92962 * Author: lucaspiller (Luca Spiller) * Status: Open * Priority: Normal * ruby -v: ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-darwin15] * Backport: 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN ---------------------------------------- URI::Encode doesn't correctly handle square brackets in the path of a URL: > URI.encode('http://example.com/resource[1].doc') => "http://example.com/resource[1].doc" It should return "http://example.com/resource%5B1%5D.doc". As per [RFC3986](http://tools.ietf.org/html/rfc3986#appendix-D.1), square brackets are only valid in the host part, not the path part. URI.parse correctly raises an error if a URL has square brackets in the path, which means URI::encode can return something that is rejected by URI.parse: > URi.parse('http://example.com/resource[1].doc') URI::InvalidURIError: bad URI(is not URI?): http://example.com/resource[1].doc > URI.parse(URI::encode('http://example.com/resource[1].doc')) URI::InvalidURIError: bad URI(is not URI?): http://example.com/resource[1].doc Tested on Ruby 2.1.5 and 2.3.0 on OS X and Linux. -- https://bugs.ruby-lang.org/ Unsubscribe: