Bug #6696

[PATCH] ERB::Util.url_encode should not escape unreserved characters

Added by Mark Dodwell almost 2 years ago. Updated about 1 year ago.

Assignee:Masatoshi Seki
Target version:next minor
ruby -v:ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin11.4.2] Backport:


ERB::Util.url_encode is escaping tilde (~) where it should not according to the RFC.

This fixes that behaviour so that it now correctly avoids escaping all unreserved characters as per RFC 3986, Section 2.3:

Fwiw., this is also how the Perl implementation works:

I opened this issue originally on Github, but I think it warrants further discussion, so re-opening here.

erb_util_url_encode_rfc_fix.patch Magnifier (1.46 KB) Mark Dodwell, 07/04/2012 05:03 PM


#1 Updated by Mark Dodwell almost 2 years ago

Sorry, somehow this ticket subject line got truncated. Newline paste fail.

#2 Updated by Shyouhei Urabe almost 2 years ago

  • Subject changed from [PATCH] to [PATCH] ERB::Util.url_encode should not escape unreserved characters
  • Status changed from Open to Feedback

FYI, the old discussion is at https://github.com/ruby/ruby/pull/54

I see the patch itself is OK. The question is to be or not to be able to escape tilde.

#3 Updated by Yui NARUSE almost 2 years ago

  • Status changed from Feedback to Assigned
  • Assignee set to Masatoshi Seki

#4 Updated by Martin Dürst almost 2 years ago

The tilde was added to the unreserved characters in URIs in RFC 2396. It is specifically mentioned in http://tools.ietf.org/html/rfc2396#appendix-G.2:

The tilde "~" character was added to those in the "unreserved" set,
since it is extensively used on the Internet in spite of the
difficulty to transcribe it with some keyboards.

RFC 2396 was published in August 1998, about 14 years ago. I think it's safe to make this change now :-).

#5 Updated by Yui NARUSE almost 2 years ago

This can change but need not, so up to seki, the maintainer.


#6 Updated by Yui NARUSE about 1 year ago

  • Target version changed from 1.9.3 to next minor

Also available in: Atom PDF