Je doute très très (très) fortement que la conversion s'exécute du côté de Perl alors que c'est à la base que tu as demandé de la faire, de ce fait je ne vois pas pourquoi Perl génèrerait une telle erreur : a priori il reçoit des informations en latin9 de la DB et n'est même pas censé savoir qu'elles étaient en Unicode auparavant. En fait la chaîne CLIENT_ENCODING n'est même pas présente dans les sources de DBI ou de DBD::Pg, je vois mal où Perl pourrait intervenir dans l'équation... Je te le répète, le problème vient de la base de donnée quoiqu'en dise la documentation (je peux imaginer une dizaines de raisons pour laquelle cette phrase ne s'applique pas dans ton cas, d'un problème de version à un réglage de rigueur de la DB plus fort que par défaut...).
Au fait tu peux remplacer ton code par :
$dbh->do("SET CLIENT_ENCODING TO 'LATIN9'");
prepare()/execute() c'est pour les requêtes SELECT ou les requêtes que tu veux répéter plusieurs fois.
Si vraiment tu n'arrives pas à obtenir le comportement voulu du côté de la base, pourquoi ne pas effectuer la conversion du côté client ? C'est moins modulaire mais si vraiment tu ne trouves pas...
--
Jedaï
Partager