Vous avez d'abord l'encodage de la DB. Ensuite, vous avez l'encodage utilisé par le client ODBC.
Si l'encodage de votre connexion client ODBC ne correspond pas à celui de la BD, la couche ODBC transcodera automatiquement vos données, dans certains cas.
L'astuce ici est de forcer l'encodage de la connexion client ODBC.
Pour une configuration "tout UTF-8" :
$conn=odbc_connect(DB_DSN,DB_USR,DB_PWD);
odbc_exec($conn, "SET NAMES 'UTF8'");
odbc_exec($conn, "SET client_encoding='UTF-8'");
// processing here
Cela fonctionne parfaitement avec PostgreSQL + Php 5.x.Le exact la syntaxe et les options dépendent du fournisseur de la base de données.
Vous pouvez trouver des informations supplémentaires très utiles et claires pour MySql ici : http://dev.mysql.com/doc/refman/5.0/fr/charset-connection.html
J'espère que cela vous aidera.