Som svar på kundfrågor beskriver detta dokument hur du ställer in HS_LANGUAGE
och HS_NLS_NCHAR
parametrar när du använder DG4ODBC.
Om du använder en Unicode ODBC-drivrutin såsom SQL Server ODBC-drivrutinen, se till att dessa parametrar och värden finns i din DG4ODBC init-fil:
HS_LANGUAGE = language_territory.code_page HS_NLS_NCHAR = UCS2
Ersätt språk , territorium och kodsida med Oracle®-språket, territoriet och teckentabellen som överensstämmer med dina databasers språk, språk och teckentabell.
Till exempel, om din databas är SQL Server och dess språk och teckentabell är English (United States)
och 1252
, din HS_LANGUAGE
parametern skulle se ut så här:
HS_LANGUAGE = ENGLISH_AMERICA.WE8MSWIN1252
HS_NLS_NCHAR
parametervärdet talar om för DG4ODBC att skicka UCS-2-kodad data till Unicode ODBC API:er, vilket är teckenkodningen som ODBC-standardtillstånden ska användas och är därför den som unixODBC Driver Manager förväntar sig.
Se också till att du har ställt in NLS_LANG
innan du startar din Oracle®-applikation. NLS_LANG
låter Oracle® veta vilken teckenuppsättning din klientdator använder. Till exempel:
$ echo $LANG en_US.UTF-8 $ NLS_LANG=AMERICAN_AMERICA.AL32UTF8 ./sqlplus
Om du använder en ANSI ODBC-drivrutin (som inte stöder breda ODBC API-anrop), måste du ange en icke UTF-8-teckenuppsättning i HS_LANGUAGE
värde. Till exempel, HS_LANGUAGE = AMERICAN_AMERICA.WE8ISO8859P1
. Om du inte gör detta och din Oracle®-databas NLS_CHARACTERSET
värdet är satt till en UTF-8-kodning, till exempel AL32UTF8
, DG4ODBC:
- Använder Unicode ODBC API:er, till exempel
SQLDriverConnectW
, som unixODBC Driver Manager mappar till deras ANSI-motsvarighet (eller om dinHS_FDS_SHAREABLE_NAME
parametern pekar på ODBC-drivrutinen delade objektet, gör att anslutningen misslyckas med ett "odefinierad symbol"-fel). - Överför UTF-8-kodad data till ODBC API:er, som unixODBC Driver Manager inte stöder. Anslutningen misslyckas eftersom DG4ODBC skickar en UTF-8-kodad anslutningssträng till
SQLDriverConnectW
, som unixODBC Driver Manager inte kan hantera.
Unicode ODBC-drivrutiner
Unicode ODBC-drivrutiner stöder de breda ODBC API:erna, som har formen SQLxxxW. För att kontrollera om din ODBC-drivrutin stöder breda ODBC-API:er, kontrollera antingen med din drivrutinsleverantör eller aktivera ODBC-drivrutinsloggning, anslut till DG4ODBC och undersök den resulterande loggfilen. Till exempel:
$ 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...