You need to use URL encoding. You can use one of the URI modules or if you want to roll your own these are the algorithms. Essentially you encode as %HH where HH is the 2 char hex representation of the char code. Spaces can be encoded as %20 or +. To display 'odd' characters correctly in a browser you may need to encode them using HTML::Entities.
sub url_decode {
my ( $decode ) = @_;
return '' unless defined $decode;
$decode =~ tr/+/ /;
$decode =~ s/%([a-fA-F0-9]{2})/ pack "C", hex $1 /eg;
return $decode;
}
# RFC 1738
# Only alphanumerics [0-9a-zA-Z], the special characters $-_.+!*'(),
# and reserved characters used for their reserved purposes
# may be used unencoded within a URL. we encode more because of issues
# that some browsers have with the RFC
sub url_encode {
my ( $encode ) = @_;
return '' unless defined $encode;
$encode =~ s/([^a-zA-Z0-9_. -])/ uc sprintf "%%%02x",ord $1 /eg;
$encode =~ tr/ /+/;
return $encode;
}
|