UNIX/Linux - ODBC Driver for Teradata

ODBC Driver for Teradata® ユーザー ガイド

Product
ODBC Driver for Teradata
Release Number
17.20
Published
2022年6月
Language
日本語
Last Update
2022-08-22
dita:mapPath
ja-JP/uqj1639470627591.ditamap
dita:ditavalPath
ja-JP/nkw1500504256726.ditaval
dita:id
B035-2526
Product Category
Teradata Tools and Utilities

UNIXシステムの場合、UTF8エンコードUnicode文字列用の固有のC/C++型はありません。UTF8エンコード文字列を表わす場合、通常はchar型の文字列を使用しますが、文字列を扱う関数を使用する場合には、特にバイト数と文字数で表わされる文字列の長さについて、注意が必要です。

ほとんどのUNIXシステムの実装にはwchar_t型がありますが、この型は通常、UTF8ではなく、UTF32のような固定長文字のエンコーディングに使用される32ビットのデータ型です。このようなシステムの場合の別のアプローチとしては、アプリケーション内部ではwchar_tを使用し、ODBC Driver for Teradataのような外部インターフェースに文字列を渡す場合にUTF8に変換して戻します。

可能な場合は常に、SQLWCHAR ODBC文字型は、wchar_t型ではなく、Unicode文字列に対して使用する必要があります。これはSQLWCHARとwchar_tは、すべてのOSで同じとは限らないからです。

UNIXシステムの場合、文字列のUnicodeエンコーディングとODBC Driver for Teradataに渡されるデータは、次のとおりデフォルトのUTF8からUTF16に変更できます。

  1. SQLWCHARSHORTを定義します。例えば、ユーザーのコードに次を追加します。

    #define SQLWCHARSHORT

    SQLCHARSHORTは、SQL_WCHARの定義をchar*からshort *に変更します。これは、ODBCインクルード ファイルが指定される前に定義されていなければなりません。
  2. SQL_ATTR_APP_UNICODE_TYPE環境属性をSQL_DD_CP_UTF16に設定します。例えば、ユーザーのコードに次を追加します。
    // Specify the unicode encoding for the application. SQL calls and
    // data are both affected. No other environment variables or
    // connection options (including DSN options) are needed.
    rc = SQLSetEnvAttr
        (m_henv, SQL_ATTR_APP_UNICODE_TYPE,
        (void *) SQL_DD_CP_UTF16, SQL_IS_INTEGER);