まず、DBのエンコーディングがあります。次に、ODBCクライアントで使用されるエンコーディングがあります。
ODBCクライアント接続のエンコーディングがDBのエンコーディングと一致しない場合、場合によっては、ODBCレイヤーがデータを自動的にトランスコードします。
ここでの秘訣は、ODBCクライアント接続のエンコードを強制することです。
「すべての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
これはPostgreSQL+PHP5.xで完全に機能します。正確な 構文とオプションはDBベンダーによって異なります。
MySqlの非常に便利で明確な追加情報は、次の場所にあります: http://dev.mysql.com/doc/refman/5.0/fr/charset-connection.html
これがお役に立てば幸いです。