[Catalyst] + in GET param

Gavin Henry ghenry at perl.me.uk
Tue Sep 11 15:45:28 GMT 2007


<quote who="Will Hawes">
> On 11/09/2007, Gavin Henry <ghenry at perl.me.uk> wrote:
>> Dear list,
>>
>> I have created a url via uri_for that produces (hashref passed in):
>>
>>      http://myserver.com/blah/?username=first.last%2Bme%40gmail.com
>>
>> so the + is escaped into %2B. Fine.
>>
>> This param comes in via:
>>
>> $c->stash->{username} = $c->req->param('username');
>>
>> A warn on $c->req->param('username');
>>
>> shows (as does the debug console via _server.pl and via Apache):
>>
>>      first.last me at gmail.com
>>
>> as a + sign is a shortcut for space in a URL. The above is a valid
>> e-mail
>> address which I need to cater for.
>>
>> Any ideas on how to get the first.last+me at gmail.com into Catalyst
>> without
>> the + getting turned into a space?
>>
>> If it's not possible I can do a redesign of this part of the site.
>>
>> Thanks,
>>
>> Gavin.
>
> If I understand you correctly, this might be useful:
>
> http://search.cpan.org/dist/URI/URI/Escape.pm
>

That's what uri_for is already doing (I forgot to mention I'd checked
already).

uri_for:

    http://myserver.com/blah/?username=first.last%2Bme%40gmail.com

URI::Escape:

perl -MURI::Escape -e "print uri_escape('first.last+me at gmail.com')";

    first.last%2Bme%40gmail.com

Same either way.

Thanks though.



More information about the Catalyst mailing list