#!/usr/bin/perl;
use Encode;
use URI::Escape;
sub smartdecode {
use URI::Escape qw( uri_unescape );
use utf8;
my $x = my $y = uri_unescape($_[0]);
return $x if utf8::decode($x);
return $y;
}
binmode(STDOUT, ":utf8");
my $in = "http://api.openstreetmap.cz/table/ref/%C5%A0U991";
print smartdecode($in);
Můj oblíbený rozcestník ŠU991 ( http://api.openstreetmap.cz/table/id/5842 ) - nedokáži se na něj dotázat přes ref ani hashtag
Odkazy: http://api.openstreetmap.cz/table/ref/ŠU991 ( prohlížeč to překóduje na http://api.openstreetmap.cz/table/ref/%C5%A0U991) http://api.openstreetmap.cz/table/hashtag/ref:šu991 ( prohlížeč to překóduje na http://api.openstreetmap.cz/table/hashtag/ref:%C5%A1u991)
Viz: http://stackoverflow.com/questions/13163937/decode-utf-8-url-in-perl
A testovací příklad:
Výstup: