Je ne suis vraiment pas doué avec UTF8 et Perl. Un coup ça marche, un coup non… Des années que je perds des heures à essayer des trucs différents.
Là j’ai un résultat qui a l’air de marcher, jusqu’à la prochaine fois :
#!/usr/bin/perl -w
use DBI;
use Encode;
use utf8;
use open ':utf8';
binmode STDOUT, ":utf8";
my $dbh = DBI->connect("DBI:Pg:dbname=madb;host=localhost","monuser","motdepasse") ;
$dbh->prepare("SET NAMES 'utf8'")->execute;
$dbh->{pg_enable_utf8}=1;
Sinon, un truc idiot pour être sûr qu’on produit bien de l’UTF8 :
perl monscript.pl >x && file x
x: UTF-8 Unicode text
Un truc à ne pas oublier (issu de la bible) :
When you encode, the resulting UTF8 flag is always off.
When you decode, the resulting UTF8 flag is on–unless you can unambiguously represent data.