Perl: Encode e Decode de strings e URL UTF-8
Essa aqui eu usei para para corrigir problemas com acentos nos email, porém serve para URL, string e outras mais.
Veja uma forma fácil de fazer o encode e decode de uma string.
Encode
Vamos fazer o Encode da string, você pode utilizar para criar URL seguras e validas.
$str =~ s/([^A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg;
Decode
A forma de reverter a URL codificada para a forma legível.
$str =~ s/\%([A-Fa-f0-9]{2})/pack('C', hex($1))/seg;
Exemplo
Veja o seguinte exemplo de programa simples.
#!/usr/bin/perl $str="Minha avó e minha mãe não gostam de pão"; print("Normal: ".$str."\n"); $str =~ s/([^A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg; print("Encode: ".$str."\n"); $str =~ s/\%([A-Fa-f0-9]{2})/pack('C', hex($1))/seg; print("Decode: ".$str."\n");
Agora veja o resultado quando executamos
Normal: Minha avó e minha mãe não gostam de pão Encode: Minha%20av%C3%B3%20e%20minha%20m%C3%A3e%20n%C3%A3o%20gostam%20de%20p%C3%A3o Decode: Minha avó e minha mãe não gostam de pão