ANSIアプリケーション(UNICODEを定義せずにコンパイルされたもの)に対して、UNIX OS上のドライバ マネージャは、以下のような変換は行ないません。
- SQLColAttribute呼び出しをODBC Driver for TeradataのSQLColAttribute呼び出しにする変換
- 出力パラメータをUTF-8からアプリケーション コード ページに戻す変換
そのため、SQLColAttributeからの出力パラメータは、ドライバが使用する内部文字セットでANSIアプリケーションに返されます。内部文字セットがアプリケーション コード ページと異なる場合、アプリケーションは、SQLColAttributeから返されたデータを、予測されたものとは異なる文字セットで受信することになります。
このような状態は、ISO 8859-1を使用するANSIアプリケーションが非ASCIIメタデータ(デンマーク語の文字が含まれる列名など)を要求した際にセッション文字セットがUTF-8である場合などに、問題となります。アプリケーションは、返された列名をUTF-8で受け取ります。一般に、ANSIアプリケーションがUnicodeセッション文字セットを使用している場合、そのアプリケーションは、アプリケーション コード ページに関係なく、SQLColAttributeから返されるデータをUTF-8で受け取ることになります。
この問題を回避するためには、古いSQLColAttributes関数(末尾に's'が付きます)を使用してください。