Muchas veces nos habremos encontrado con que al estar haciendo un script para trabajar con el código de alguna web al tratar los carácteres no ascii estandar se nos ven mal al imprimirlos por pantalla o no los podemos usar bien porque no sabe representarlos.
Para que perl sepa reconocerlos de manera correcta, usaremos el modulo Encode (perl -MCPAN -e shell o cpan ( con active perl ) ; install Encode)
#!/usr/bin/perl
use Encode;
$limpia = decode(“windows-1250″, $varible_codificacion_windows-1250);
print $limpia . “\n”;
“windows-1250″ no tiene que ser necesariamente esa, puede ser cualquiera de las que tengamos. Para ver las posibles usariamos algo parecido a esto:
#/usr/bin/perl
use Encode;
@list = Encode->encodings();
Algo más sobre codificaciones
Si tienes dudas de qué encoding usa su editor, recomiendo que eches un
vistazo a cómo graba los caracteres tu editor. Si las tildes aparecen
como un único byte, seguramente sea ISO-8859-1. Si los caracteres sin
tilde aparecen como un byte y aquellos con tilde como dos, seguramente
sea UTF-8, y si todos los caracteres tienen dos bytes, entonces es
UTF-16 (poco habitual como opción por defecto). Puedes verlo usando
“hexdump -C nombre_fichero.xml”.
origen: la lista de hispalinux