module CGI::Util
def unescapeURIComponent(string, encoding = @@accept_charset)
string = CGI.unescape("%27Stop%21%27+said%20Fred")
URL-decode a string following RFC 3986 with encoding(optional).
def unescapeURIComponent(string, encoding = @@accept_charset) str = string.b str.gsub!(/((?:%[0-9a-fA-F]{2})+)/) do |m| [m.delete('%')].pack('H*') end str.force_encoding(encoding) str.valid_encoding? ? str : str.force_encoding(string.encoding) end