It looks like the default character class used by URI::Escape::uri_escape changed in version 1.16 to be exactly the same as the one I suggested. Older versions didn't escape the reserved characters.
- Kyle ----- Original Message ----- From: "Kyle Oppenheim" <[EMAIL PROTECTED]> To: "modperl List" <[EMAIL PROTECTED]> Sent: Thursday, November 14, 2002 4:10 PM Subject: Re: URI escaping question > According to RFC 2396 (http://www.ietf.org/rfc/rfc2396.txt) the reserved > characters in the query component of a URI are ";", "/", "?", ":", "@","&", > "=", "+", ",", and "$". > Apache::Util->escape_uri() does not escape ":", "@", "&", "=", "+", ",", or > "$". > > Something like the following should work: > > use URI::Escape qw(uri_escape); > > sub uri_escape_query_value { > my $character_class = '^A-Za-z0-9\-_.!~*\'()'; > uri_escape($_[0], $character_class); > } > > - Kyle > > ----- Original Message ----- > From: "Ray Zimmerman" <[EMAIL PROTECTED]> > To: "modperl List" <[EMAIL PROTECTED]> > Cc: "Raj Chandran" <[EMAIL PROTECTED]> > Sent: Thursday, November 14, 2002 12:25 PM > Subject: URI escaping question > > > > Oops ... finger slipped before I was done typing ... > > > > Suppose I have a hash of string values that I want to include in the > > query string of a redirect URL. What is the accepted way of escaping > > the values to be sure that they come through intact? > > > > Specifically, it seems that Apache::Util->escape_uri() is not > > escaping '=' and '&' so if one of the values in the hash is a URI > > with a query string it messes things up. > > > > -- > > Ray Zimmerman / e-mail: [EMAIL PROTECTED] / 428-B Phillips Hall > > Sr Research / phone: (607) 255-9645 / Cornell University > > Associate / FAX: (815) 377-3932 / Ithaca, NY 14853 > > > >