Sebagai tanggapan atas pertanyaan pelanggan, dokumen ini menjelaskan cara menyetel HS_LANGUAGE
dan HS_NLS_NCHAR
parameter saat menggunakan DG4ODBC.
Jika Anda menggunakan pengandar ODBC Unicode seperti pengandar SQL Server ODBC, pastikan parameter dan nilai ini ada di file init DG4ODBC Anda:
HS_LANGUAGE = language_territory.code_page HS_NLS_NCHAR = UCS2
Ganti bahasa , wilayah dan halaman_kode dengan halaman bahasa, wilayah, dan kode Oracle® yang sesuai dengan halaman bahasa, lokal, dan kode database Anda.
Misalnya, jika database Anda adalah SQL Server, dan bahasa serta halaman kodenya adalah English (United States)
dan 1252
, HS_LANGUAGE
. Anda parameternya akan terlihat seperti ini:
HS_LANGUAGE = ENGLISH_AMERICA.WE8MSWIN1252
HS_NLS_NCHAR
nilai parameter memberi tahu DG4ODBC untuk meneruskan data yang disandikan UCS-2 ke Unicode ODBC API, yang merupakan pengkodean karakter status standar ODBC yang harus digunakan dan oleh karena itu adalah yang diharapkan oleh Manajer Pengandar unixODBC.
Pastikan juga Anda telah menyetel NLS_LANG
sebelum memulai aplikasi Oracle® Anda. NLS_LANG
memungkinkan Oracle® mengetahui set karakter apa yang digunakan mesin klien Anda. Misalnya:
$ echo $LANG en_US.UTF-8 $ NLS_LANG=AMERICAN_AMERICA.AL32UTF8 ./sqlplus
Jika Anda menggunakan driver ANSI ODBC (yang tidak mendukung panggilan API ODBC lebar), Anda perlu menentukan set karakter non UTF-8 di HS_LANGUAGE
nilai. Misalnya, HS_LANGUAGE = AMERICAN_AMERICA.WE8ISO8859P1
. Jika Anda tidak melakukan ini dan NLS_CHARACTERSET
database Oracle® Anda nilai diatur ke pengkodean UTF-8, misalnya AL32UTF8
, DG4ODBC:
- Menggunakan Unicode ODBC API, misalnya,
SQLDriverConnectW
, yang dipetakan oleh Pengelola Driver unixODBC ke ANSI yang setara (atau jikaHS_FDS_SHAREABLE_NAME
Anda parameter menunjuk ke objek bersama driver ODBC, menyebabkan koneksi gagal dengan kesalahan "simbol tidak terdefinisi"). - Meneruskan data yang disandikan UTF-8 ke API ODBC, yang tidak didukung oleh Manajer Pengandar unixODBC. Sambungan gagal karena DG4ODBC meneruskan string sambungan yang disandikan UTF-8 ke
SQLDriverConnectW
, yang tidak dapat ditangani oleh Pengelola Driver unixODBC.
Driver ODBC Unicode
Driver ODBC Unicode mendukung API ODBC yang luas, yang berbentuk SQLxxxW. Untuk memeriksa apakah driver ODBC Anda mendukung API ODBC yang luas, periksa dengan vendor driver Anda, atau, aktifkan logging driver ODBC, sambungkan dengan DG4ODBC dan periksa file log yang dihasilkan. Misalnya:
$ 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...