Windows上の既存のUnicodeアプリケーションは、UnicodeのUTF8エンコーディングを使用することによって、ODBC ANSI関数呼び出しでUnicodeデータをデータベースに渡すことができるようになっている場合があります。そのようなアプリケーションでは、UTF8セッション文字セットを使用します。上記のアプリケーションでは、Unicodeドライバに関して以下の問題が発生します。
- ANSI API経由でLatinまたはKanjiのオブジェクト名を渡すと、文字列に無効な文字が含まれるため、ドライバ マネージャがアプリケーション コード ページを使用してUTF-16にコード変換できず失敗します。例えば、日本語版のPCで動作している場合、ドライバ マネージャはSJISと仮定して文字をUTF8にコード変換します。
- SQLリクエストを、例えば、 "INTO T values ..."のようにLatinまたはKanjiで渡すと、ドライバ マネージャがアプリケーション コード ページを使用してUTF16にコード変換できないため失敗します。
- SQL_C_CHAR文字データ型の場合、新リリースのドライバは、データのアプリケーション コード ページとUTF-8セッション文字セットとをコード変換します。非ASCII文字の場合は失敗します。
したがって、SQL_C_CHARデータにバインドしてUTF8データを渡したり取得したりすることはできません。