Method: URI.encode_www_form_component

Defined in:
lib/uri/common.rb

.encode_www_form_component(str, enc = nil) ⇒ Object

Returns a URL-encoded string derived from the given string str.

The returned string:

  • Preserves:

  • Characters '*', '.', '-', and '_'.

  • Character in ranges 'a'..'z', 'A'..'Z', and '0'..'9'.

Example:

URI.encode_www_form_component('*.-_azAZ09')
# => "*.-_azAZ09"
  • Converts:

  • Character ' ' to character '+'.

  • Any other character to "percent notation"; the percent notation for character c is '%%%X' % c.ord.

Example:

URI.encode_www_form_component('Here are some punctuation characters: ,;?:')
# => "Here+are+some+punctuation+characters%3A+%2C%3B%3F%3A"

Encoding:

  • If str has encoding Encoding::ASCII_8BIT, argument enc is ignored.
  • Otherwise str is converted first to Encoding::UTF_8 (with suitable character replacements), and then to encoding enc.

In either case, the returned string has forced encoding Encoding::US_ASCII.

Related: URI.encode_uri_component (encodes ' ' as '%20').



358
359
360
# File 'lib/uri/common.rb', line 358

def self.encode_www_form_component(str, enc=nil)
  _encode_uri_component(/[^*\-.0-9A-Z_a-z]/, TBLENCWWWCOMP_, str, enc)
end