/ / Decode URL utf-8 en Perl - perl, décodage, codage

Décoder l'URL de l'utilitaire utf-8 dans Perl - perl, decode, encode

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 № 1

Si 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