URI.escape(str [, unsafe])
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.
Escapes the string, replacing all unsafe characters with codes.
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"
# File uri/common.rb, line 284
def escape(str, unsafe = UNSAFE)
unless unsafe.kind_of?(Regexp)
# perhaps unsafe is String object
unsafe = Regexp.new("[#{Regexp.quote(unsafe)}]", false, 'N')
end
str.gsub(unsafe) do |us|
tmp = ''
us.each_byte do |uc|
tmp << sprintf('%%%02X', uc)
end
tmp
end
end
URI.unescape(str)
str
Unescapes the string.
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"
# File uri/common.rb, line 319
def unescape(str)
str.gsub(ESCAPED) do
$&[1,2].hex.chr
end
end