Als antwoord op vragen van klanten wordt in dit document beschreven hoe u de HS_LANGUAGE
. instelt en HS_NLS_NCHAR
parameters bij gebruik van DG4ODBC.
Als u een Unicode ODBC-stuurprogramma gebruikt, zoals het SQL Server ODBC-stuurprogramma, zorg er dan voor dat deze parameters en waarden aanwezig zijn in uw DG4ODBC-initbestand:
HS_LANGUAGE = language_territory.code_page HS_NLS_NCHAR = UCS2
Vervang taal , gebied en code_page met de taal, het territorium en de codepagina van Oracle® die overeenkomen met de taal, de landinstelling en de codepagina van uw databases.
Als uw database bijvoorbeeld SQL Server is en de taal en codepagina English (United States)
zijn en 1252
, uw HS_LANGUAGE
parameter zou er als volgt uitzien:
HS_LANGUAGE = ENGLISH_AMERICA.WE8MSWIN1252
De HS_NLS_NCHAR
parameterwaarde vertelt DG4ODBC om UCS-2-gecodeerde gegevens door te geven aan de Unicode ODBC API's, wat de tekencodering is die de ODBC-standaardstatussen moeten gebruiken en daarom degene is die de unixODBC Driver Manager verwacht.
Zorg er ook voor dat u NLS_LANG
. heeft ingesteld voordat u uw Oracle®-toepassing start. NLS_LANG
laat Oracle® weten welke tekenset uw clientcomputer gebruikt. Bijvoorbeeld:
$ echo $LANG en_US.UTF-8 $ NLS_LANG=AMERICAN_AMERICA.AL32UTF8 ./sqlplus
Als u een ANSI ODBC-stuurprogramma gebruikt (dat geen brede ODBC API-aanroepen ondersteunt), moet u een niet-UTF-8-tekenset opgeven in de HS_LANGUAGE
waarde. Bijvoorbeeld HS_LANGUAGE = AMERICAN_AMERICA.WE8ISO8859P1
. Als u dit niet doet en de NLS_CHARACTERSET
. van uw Oracle®-database waarde is ingesteld op een UTF-8-codering, bijvoorbeeld AL32UTF8
, DG4ODBC:
- Gebruikt de Unicode ODBC API's, bijvoorbeeld
SQLDriverConnectW
, die de unixODBC Driver Manager toewijst aan hun ANSI-equivalent (of als uwHS_FDS_SHAREABLE_NAME
parameter verwijst naar het gedeelde object van het ODBC-stuurprogramma, waardoor de verbinding mislukt met een "undefined symbol"-fout). - Geeft UTF-8-gecodeerde gegevens door aan de ODBC-API's, die de unixODBC Driver Manager niet ondersteunt. De verbinding mislukt omdat DG4ODBC een UTF-8-gecodeerde verbindingsreeks doorgeeft aan
SQLDriverConnectW
, die de unixODBC Driver Manager niet aankan.
Unicode ODBC-stuurprogramma's
Unicode ODBC-stuurprogramma's ondersteunen de brede ODBC-API's, die de vorm SQLxxxW hebben. Om te controleren of uw ODBC-stuurprogramma brede ODBC-API's ondersteunt, neemt u contact op met de leverancier van uw stuurprogramma of schakelt u ODBC-stuurprogrammalogboekregistratie in, maakt u verbinding met DG4ODBC en bekijkt u het resulterende logbestand. Bijvoorbeeld:
$ 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...