Bonsoir
je suis en train de reprendre une appli perl/Tk qui attaque une BDD postGreSQL via le module DBI / ODBC sous win XP. Jusqu'à présent la base était sous encodage SQL_ASCII. Je viens de la passer en UTF8.
Donc, j'ai modifié l'encodage du script perl en conséquence (tout utf8).
Quand je rentre un nouvel enregistrement dans ma base par cette interface, je m'aperçois que les caractères accentués posaient souci. Or ma chaîne de traitement est entièrement utf8.
Je me suis penché sur les log ODBC et vu que les requêtes paramétrées (bind_param) transformaient mes caractères accentués avant d'insérer en base de données. Pour être sûr, j'ai remplacé une de ces requête paramétrée par une requête classique, et là plus de problème.
Savez vous si on peut spécifier au moment du bind_param que la chaîne correspondante est en utf8?
merci d'avance pour vos réponses
Gérald
transforme mes caractères accentués avant d'envoyer la requête à la base alors que les commandes suivantes conservent le bon encodage
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 $sth = $dbh-> prepare("INSERT INTO unit(ident, name, description, mail, facturation_address, unit_address) VALUES ('$ident',?,?,?,?,?)") $sth->bind_param(1,$name,SQL_VARCHAR); $sth->bind_param(2,$description,SQL_VARCHAR); $sth->bind_param(3,$mail,SQL_VARCHAR); $sth->bind_param(4,$adresse_facturation,SQL_VARCHAR); $sth->bind_param(5,$adresse_labo,SQL_VARCHAR); $sth->execute() || die error('échec : ' . DBI::errstr); $sth->finish; $dbh->commit();
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 my $requete = "INSERT INTO unit(ident, name, description, mail, facturation_address, unit_address) VALUES ('$ident', '$name', '$description', '$mail', '$adresse_facturation', '$adresse_labo')"; $log->debug($reuqte); $sth = $dbh-> prepare($requete); $sth->execute() || die error('échec : ' . DBI::errstr); $sth->finish; $dbh->commit();
Partager