Synopsis
URI.escape(str [, unsafe])
Args
str: | String to replaces in.
|
unsafe: | Regexp that matches all symbols that must be
replaced with codes. By default uses REGEXP::UNSAFE. When this
argument is a String, it represents a
character set.
|
Description
Escapes the string, replacing all unsafe characters with codes.
Usage
require 'uri'
enc_uri = URI.escape("http://example.com/?a=\11\15")
p enc_uri
# => "http://example.com/?a=%09%0D"
p URI.unescape(enc_uri)
# => "http://example.com/?a=\t\r"
p URI.escape("@?@!", "!?")
# => "@%3F@%21"
[Source]
284: def escape(str, unsafe = UNSAFE)
285: unless unsafe.kind_of?(Regexp)
286:
287: unsafe = Regexp.new("[#{Regexp.quote(unsafe)}]", false, 'N')
288: end
289: str.gsub(unsafe) do |us|
290: tmp = ''
291: us.each_byte do |uc|
292: tmp << sprintf('%%%02X', uc)
293: end
294: tmp
295: end
296: end