このドキュメントでは、お客様からの問い合わせに応えて、HS_LANGUAGE
を設定する方法について説明します。 およびHS_NLS_NCHAR
DG4ODBCを使用する場合のパラメータ。
SQL ServerODBCドライバーなどのUnicodeODBCドライバーを使用している場合は、これらのパラメーターと値がDG4ODBC初期化ファイルに存在することを確認してください。
HS_LANGUAGE = language_territory.code_page HS_NLS_NCHAR = UCS2
languageを置き換えます 、テリトリー およびcode_page データベースの言語、ロケール、およびコードページに対応するOracle®の言語、地域、およびコードページを使用します。
たとえば、データベースがSQL Serverであり、その言語とコードページがEnglish (United States)
である場合 および1252
、HS_LANGUAGE
パラメータは次のようになります:
HS_LANGUAGE = ENGLISH_AMERICA.WE8MSWIN1252
HS_NLS_NCHAR
パラメータ値は、UCS-2でエンコードされたデータをUnicode ODBC APIに渡すようにDG4ODBCに指示します。これは、ODBC標準状態をエンコードする文字を使用する必要があるため、unixODBCDriverManagerが期待する文字です。
NLS_LANG
が設定されていることも確認してください Oracle®アプリケーションを起動する前に。 NLS_LANG
Oracle®に、クライアントマシンが使用している文字セットを知らせます。例:
$ echo $LANG en_US.UTF-8 $ NLS_LANG=AMERICAN_AMERICA.AL32UTF8 ./sqlplus
ANSI ODBCドライバー(ワイドODBC API呼び出しをサポートしない)を使用している場合は、HS_LANGUAGE
で非UTF-8文字セットを指定する必要があります。 価値。たとえば、HS_LANGUAGE = AMERICAN_AMERICA.WE8ISO8859P1
。これを行わないと、Oracle®データベースのNLS_CHARACTERSET
値はUTF-8エンコーディングに設定されます(例:AL32UTF8
) 、DG4ODBC:
- Unicode ODBC APIを使用します(例:
SQLDriverConnectW
) 、unixODBC Driver Managerが同等のANSIにマップします(または、HS_FDS_SHAREABLE_NAME
の場合) パラメータがODBCドライバ共有オブジェクトを指しているため、「未定義のシンボル」エラーで接続が失敗します。 - UTF-8でエンコードされたデータをODBCAPIに渡します。これは、unixODBCDriverManagerではサポートされていません。 DG4ODBCがUTF-8でエンコードされた接続文字列を
SQLDriverConnectW
に渡すため、接続が失敗します 、unixODBCDriverManagerでは処理できません。
UnicodeODBCドライバー
Unicode ODBCドライバーは、SQLxxxW形式のワイドODBCAPIをサポートします。 ODBCドライバーがワイドODBCAPIをサポートしているかどうかを確認するには、ドライバーベンダーに確認するか、ODBCドライバーロギングを有効にして、DG4ODBCに接続し、結果のログファイルを調べます。例:
$ more /etc/odbc.ini [SQLSERVER_SAMPLE] . . . Logging=Yes LogFile=/tmp/mssql.log $ ./sqlplus / as sysdba $ select * from mytable@mssqllink; $ exit $ more /tmp/mssql.log . . . ENTRY: SQLGetInfoW: connection_handle...