J’ai longtemps trainé autour d’une solution, passant par des modules hasardeux et des manoeuvres try {} et aujourd’hui j’en arrive à ce point pour négocier les encodages variés, car même si l’UTF-8 est maintenant dominant, le notepad.exe n’enregistre toujours pas par défaut ainsi.
C’est presque un haïku:
open(T,'<','Any.txt') or die($!);
binmode(T);
$l = <T>;
close(T);
if(length($l) == length(decode('utf-8',$l))) {
$l = encode('utf-8',$l);
}
print $l;
Le binmode ne sert à rien mais c’est pour montrer l’intention.
Enfin, avec HTML::Entities
$l = encode('utf-8',decode_entities(decode('utf-8',$l)));