Primeiro você tem a codificação do banco de dados. Então você tem a codificação usada pelo cliente ODBC.
Se a codificação de sua conexão de cliente ODBC não corresponder à do banco de dados, a camada ODBC irá transcodificar automaticamente seus dados, em alguns casos.
O truque aqui é forçar a codificação da conexão do cliente ODBC.
Para uma configuração "all 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
Isso funciona perfeitamente com PostgreSQL + Php 5.x. O exato sintaxe e opções depende do fornecedor do banco de dados.
Você pode encontrar informações adicionais muito úteis e claras para o MySql aqui: http://dev.mysql.com/doc/refman/5.0/fr/charset-connection.html
espero que isto ajude.