Som svar på kundeforespørgsler beskriver dette dokument, hvordan du indstiller HS_LANGUAGE
og HS_NLS_NCHAR
parametre ved brug af DG4ODBC.
Hvis du bruger en Unicode ODBC-driver, såsom SQL Server ODBC-driveren, skal du sikre dig, at disse parametre og værdier er til stede i din DG4ODBC init-fil:
HS_LANGUAGE = language_territory.code_page HS_NLS_NCHAR = UCS2
Erstat sprog , område og kodeside med Oracle® sprog, territorium og kodetabel, der svarer til dine databasers sprog, lokalitet og kodetabel.
For eksempel, hvis din database er SQL Server, og dens sprog og tegntabel er English (United States)
og 1252
, din HS_LANGUAGE
parameter ville se sådan ud:
HS_LANGUAGE = ENGLISH_AMERICA.WE8MSWIN1252
HS_NLS_NCHAR
parameterværdi fortæller DG4ODBC at videregive UCS-2-kodede data til Unicode ODBC API'erne, som er tegnkodningen, som ODBC-standardtilstandene skal bruges, og som derfor er den, som unixODBC Driver Manager forventer.
Sørg også for, at du har indstillet NLS_LANG
før du starter din Oracle®-applikation. NLS_LANG
lader Oracle® vide, hvilket tegnsæt din klientmaskine bruger. For eksempel:
$ echo $LANG en_US.UTF-8 $ NLS_LANG=AMERICAN_AMERICA.AL32UTF8 ./sqlplus
Hvis du bruger en ANSI ODBC-driver (som ikke understøtter brede ODBC API-kald), skal du angive et ikke UTF-8-tegnsæt i HS_LANGUAGE
værdi. For eksempel HS_LANGUAGE = AMERICAN_AMERICA.WE8ISO8859P1
. Hvis du ikke gør dette og din Oracle®-databases NLS_CHARACTERSET
værdi er sat til en UTF-8-kodning, for eksempel AL32UTF8
, DG4ODBC:
- Bruger Unicode ODBC API'er, f.eks.
SQLDriverConnectW
, som unixODBC Driver Manager tilknytter deres ANSI-ækvivalent (eller hvis dinHS_FDS_SHAREABLE_NAME
parameter peger på ODBC-driverens delte objekt, får forbindelsen til at mislykkes med en "udefineret symbol"-fejl). - Vidererer UTF-8-kodede data til ODBC API'erne, som unixODBC Driver Manager ikke understøtter. Forbindelsen mislykkes, fordi DG4ODBC sender en UTF-8-kodet forbindelsesstreng til
SQLDriverConnectW
, som unixODBC Driver Manager ikke er i stand til at håndtere.
Unicode ODBC-drivere
Unicode ODBC-drivere understøtter de brede ODBC API'er, som har formen SQLxxxW. For at kontrollere, om din ODBC-driver understøtter brede ODBC API'er, skal du enten tjekke med din driverleverandør eller aktivere ODBC-driverlogning, oprette forbindelse til DG4ODBC og undersøge den resulterende logfil. For eksempel:
$ 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...