Considérer:
use URI::Escape;
print uri_unescape("%C3%B3");
Sortie: ó
Décoder avec ça http://meyerweb.com/eric/tools/dencoder/
Sortie: ó
Ceci est celui attendu.
Quelle bibliothèque Perl devrais-je utiliser pour obtenir le bon résultat?
Réponses:
11 pour la réponse № 1Si vous savez que la séquence d'octets est utf-8puis utiliser Encode::decode
:
use Encode;
use URI::Escape;
my $in = "%C3%B3";
my $text = Encode::decode("utf8", uri_unescape($in));
print length($text); # Should print 1
0 pour la réponse № 2
Le code Encode::decode("utf8", uri_unescape($in))
ne fonctionne pas pour moi, mais le code suivant fonctionne bien.
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;
}
Ce code est de http://lwp.interglacial.com/ch05_02.htm