V reakci na dotazy zákazníků tento dokument popisuje, jak nastavit HS_LANGUAGE
a HS_NLS_NCHAR
parametry při použití DG4ODBC.
Pokud používáte ovladač Unicode ODBC, jako je ovladač SQL Server ODBC, ujistěte se, že v inicializačním souboru DG4ODBC jsou tyto parametry a hodnoty:
HS_LANGUAGE = language_territory.code_page HS_NLS_NCHAR = UCS2
Nahraďte jazyk , území a code_page s jazykem, oblastí a kódovou stránkou Oracle®, které odpovídají jazyku, národnímu prostředí a kódové stránce vaší databáze.
Pokud je například vaše databáze SQL Server a její jazyk a kódová stránka jsou English (United States)
a 1252
, váš HS_LANGUAGE
parametr by vypadal takto:
HS_LANGUAGE = ENGLISH_AMERICA.WE8MSWIN1252
HS_NLS_NCHAR
hodnota parametru říká DG4ODBC, aby předala data kódovaná UCS-2 do Unicode ODBC API, což je znak kódování standardních stavů ODBC, který by měl být použit, a proto je to ten, který unixODBC Driver Manager očekává.
Ujistěte se také, že jste nastavili NLS_LANG
před spuštěním aplikace Oracle®. NLS_LANG
umožňuje společnosti Oracle® vědět, jakou znakovou sadu používá váš klientský počítač. Například:
$ echo $LANG en_US.UTF-8 $ NLS_LANG=AMERICAN_AMERICA.AL32UTF8 ./sqlplus
Pokud používáte ovladač ANSI ODBC (který nepodporuje široká volání ODBC API), musíte v HS_LANGUAGE
zadat znakovou sadu mimo UTF-8. hodnota. Například HS_LANGUAGE = AMERICAN_AMERICA.WE8ISO8859P1
. Pokud to neuděláte, a NLS_CHARACTERSET
vaší databáze Oracle® hodnota je nastavena na kódování UTF-8, například AL32UTF8
, DG4ODBC:
- Používá rozhraní Unicode ODBC API, například
SQLDriverConnectW
, které unixODBC Driver Manager mapuje na jejich ekvivalent ANSI (nebo pokud vášHS_FDS_SHAREABLE_NAME
parametr ukazuje na sdílený objekt ovladače ODBC, způsobí selhání připojení s chybou „nedefinovaný symbol“). - Předává data kódovaná UTF-8 do rozhraní API ODBC, která správce ovladačů unixODBC nepodporuje. Připojení se nezdaří, protože DG4ODBC předává připojovací řetězec s kódováním UTF-8 do
SQLDriverConnectW
, kterou unixODBC Driver Manager nedokáže zpracovat.
Ovladače ODBC Unicode
Ovladače ODBC Unicode podporují široká rozhraní API ODBC, která mají formu SQLxxxW. Chcete-li zkontrolovat, zda váš ovladač ODBC podporuje široká rozhraní ODBC API, obraťte se na dodavatele ovladače nebo povolte protokolování ovladače ODBC, připojte se k DG4ODBC a prohlédněte si výsledný soubor protokolu. Například:
$ 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...