perl-modperl mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Matias Alejo Garcia" <mat...@confronte.com>
Subject Re: Unescape URI
Date Tue, 12 Sep 2006 12:15:32 GMT
On 9/12/06, Vladimir S. Tikhonjuk <vst@vst.donetsk.ua> wrote:
>
> Hi all!
> I have JavaScript function, which constructs html query like this:
>
> var url =
> '
> http://192.168.101.199/personal_account_search_ajax?key='+escape(key)+'&type='+type
> ;
>
> where variable 'key' is a value of form's line edit. When I enter there
> non ASCII symbol, I get
> url like this:
> http://192.168.101.199/personal_account_search_ajax?key=%u043E&type=name.
>
> Here is my personal_account_search_ajax handler:
>
> package Promtelecom::PersonalAccountSearchAjax;
>
> use strict;
> use Apache2::Const -compile => qw( OK );
>
>
> sub handler {
>   my $r = shift;
>   my $req = Apache2::Request->new( $r );
>   $req->content_type('text/xml; charset=KOI8-R');
>
>   my $search_key = $req->param('key');
>   my $search_type = $req->param('type');
>   my $archive_search = $req->param('archive_search');
>
>   return Apache2::Const::OK;
> }
>
> As I understand, I have to unescape URI here to get right value of
> $req->param('key').
> How to do it ?



You can try the following:

               # For each value ...

               #  Decodes %XX characters
                $val =~ s/%([0-9a-fA-F][0-9a-fA-F])/chr(hex($val))/eg;

                # Decodes charset
                eval {$newval=Encode::decode('utf8',$val,1)};
                $newval=Encode::decode('KOI8-R',$val,1) if ($@);

We found problems with IE 6.0 & ajax request: sometimes it doesn't respect
page encoding. All our pages are UTF8, but some IE request use iso-8859-1.
We add the 'eval' to solve this.

I am a perl utf8 newbie, so it may be some misleading here.




-- 
http://confronte.com
Compará y comprá mejor

Mime
View raw message