Freigeben über


Unicode-Anwendungen

Sie können eine Anwendung auf eine von zwei Arten als Unicode-Anwendung neu kompilieren:

  • Schließen Sie die Unicode- #define ein, die in der Headerdatei "Sqlucode.h" in der Anwendung enthalten ist.

  • Kompilieren Sie die Anwendung mit der Unicode-Option des Compilers. (Diese Option unterscheidet sich für verschiedene Compiler.)

Wenn Sie eine ANSI-Anwendung in eine Unicode-Anwendung konvertieren möchten, schreiben Sie die Anwendung, um Unicode-Daten zu speichern und zu übergeben. Darüber hinaus müssen Aufrufe von Funktionen, die SQLPOINTER-Argumente unterstützen, in die Anzahl der Bytes konvertiert werden.

Wenn die Anwendung eine ODBC-API-Funktion (ohne Suffix) aufruft, erkennt der Treiber-Manager die Anwendung als Unicode-Anwendung und konvertiert den Funktionsaufruf in eine Unicode-Funktion (mit dem W-Suffix ), wenn der zugrunde liegende Treiber Unicode unterstützt. Wenn eine ANSI-Anwendung einen Funktionsaufruf ohne Suffix vorgibt, konvertiert der Treiber-Manager ihn in ANSI, wenn der zugrunde liegende Treiber ANSI unterstützt. Wenn sowohl die Anwendung als auch der Treiber die gleiche Zeichencodierung unterstützen, übergibt der Treiber-Manager die Aufrufe an den Treiber (mit bestimmten Ausnahmen für ANSI-Anwendungen).

Eine Anwendung kann sowohl Unicode-Funktionen (mit dem W-Suffix ) als auch ANSI-Funktionen (mit oder ohne das A-Suffix ) aufrufen. Unicode- und ANSI-Funktionsaufrufe können gemischt werden. Wenn die Cursorbibliothek verwendet werden soll, können jedoch Unicode- und ANSI-Funktionsaufrufe nicht gemischt werden. Die Cursorbibliothek ist entweder Unicode oder ANSI, keine Mischung.

Eine Anwendung kann so geschrieben werden, dass sie entweder als Unicode-Anwendung oder als ANSI-Anwendung kompiliert werden kann. In diesem Fall können Zeichendatentypen als SQL_C_TCHAR deklariert werden. Dies ist ein Makro, das SQL_C_WCHAR einfügt, wenn die Anwendung als Unicode-Anwendung kompiliert oder SQL_C_CHAR eingefügt wird, wenn sie als ANSI-Anwendung kompiliert wird. Der Anwendungsprogrammierer muss auf Funktionen achten, die SQLPOINTER als Argument verwenden, da sich die Größe des Längenarguments (für Zeichenfolgendatentypen) ändert, je nachdem, ob es sich bei der Anwendung um ANSI oder Unicode handelt.

Eine Funktion kann auf eine von drei Arten aufgerufen werden: als Unicode-nur-Funktionsaufruf (mit dem W-Suffix ), als ANSI-only-Funktionsaufruf (mit dem Suffix A ) oder als ODBC-Funktionsaufruf ohne Suffix. Die Argumente für die drei Formen einer Funktion sind identisch. Nur diese Funktionen mit SQLCHAR *-Argumenten oder SQLPOINTER-Argumenten, die auf Zeichenfolgen verweisen, erfordern Unicode- und ANSI-Formulare. Bei Funktionen mit Argumenten, die als Zeichentyp deklariert werden können, z . B. SQLBindCol oder SQLGetData (die keine Unicode- und ANSI-Formulare aufweisen), kann das Argument als Unicode-Typ, ANSI-Typ oder im Fall eines C-Typarguments das SQL_C_TCHAR Makro deklariert werden. Weitere Informationen finden Sie unter Unicode-Daten.

Eine Anwendung kann auch dann als Unicode-Anwendung geschrieben werden, wenn keine Unicode-Treiber für die Arbeit mit dieser Anwendung verfügbar sind. Der Treiber-Manager zuordnen Unicode-Funktionen und Datentypen an ANSI. Es gibt einige Einschränkungen für die Unicode-zu-ANSI-Zuordnungen, die ausgeführt werden können. Das Vorhandensein eines Unicode-Treibers für die Unicode-Anwendung für die Arbeit mit der Unicode-Anwendung führt zu einer besseren Leistung und entfernt die Einschränkungen, die in der Unicode-Zuordnung in ANSI-Zuordnungen inhärent sind.