Applications Unicode
Vous pouvez recompiler une application en tant qu’application Unicode de deux façons :
Incluez le #define Unicode contenu dans le fichier d’en-tête Sqlucode.h dans l’application.
Compilez l’application avec l’option Unicode du compilateur. (Cette option sera différente pour différents compilateurs.)
Pour convertir une application ANSI en application Unicode, écrivez l’application pour stocker et transmettre des données Unicode. En outre, les appels aux fonctions qui prennent en charge les arguments SQLPOINTER doivent être convertis pour utiliser le nombre d’octets.
Une fois qu’une application est compilée en tant qu’application Unicode, si l’application appelle une fonction API ODBC (sans suffixe), le Gestionnaire de pilotes reconnaît l’application en tant qu’application Unicode et convertit l’appel de fonction en fonction Unicode (avec le suffixe W ) si le pilote sous-jacent prend en charge Unicode. Lorsqu’une application ANSI effectue un appel de fonction sans suffixe, le Gestionnaire de pilotes le convertit en ANSI si le pilote sous-jacent prend en charge ANSI. Si l’application et le pilote prennent en charge le même encodage de caractères, le gestionnaire de pilotes transmet les appels au pilote (avec certaines exceptions pour les applications ANSI).
Une application peut appeler à la fois les fonctions Unicode (avec le suffixe W ) et les fonctions ANSI (avec ou sans le suffixe A ). Les appels de fonction Unicode et ANSI peuvent être mixtes. Si la bibliothèque de curseurs doit être utilisée, toutefois, les appels de fonction Unicode et ANSI ne peuvent pas être mixtes. La bibliothèque de curseurs est Unicode ou ANSI, pas un mélange.
Une application peut être écrite de telle sorte qu’elle puisse être compilée en tant qu’application Unicode ou application ANSI. Dans ce cas, les types de données caractères peuvent être déclarés comme SQL_C_TCHAR. Il s’agit d’une macro qui insère SQL_C_WCHAR si l’application est compilée en tant qu’application Unicode ou insère SQL_C_CHAR si elle est compilée en tant qu’application ANSI. Le programmeur d’application doit faire attention aux fonctions qui prennent SQLPOINTER comme argument, car la taille de l’argument de longueur change (pour les types de données de chaîne) selon que l’application est ANSI ou Unicode.
Une fonction peut être appelée de trois façons : en tant qu’appel de fonction Unicode uniquement (avec le suffixe W ), en tant qu’appel de fonction ANSI uniquement (avec le suffixe A ) ou en tant qu’appel de fonction ODBC sans suffixe. Les arguments des trois formes d’une fonction sont identiques. Seules ces fonctions avec des arguments SQLCHAR * ou des arguments SQLPOINTER pointant vers des chaînes nécessitent des formulaires Unicode et ANSI. Pour les fonctions qui ont des arguments qui peuvent être déclarés en tant que type de caractère, tels que SQLBindCol ou SQLGetData (qui n’ont pas de formulaires Unicode et ANSI), l’argument peut être déclaré en tant que type Unicode, type ANSI, ou dans le cas d’un argument de type C, la macro SQL_C_TCHAR. Pour plus d’informations, consultez Données Unicode.
Une application peut être écrite en tant qu’application Unicode, même si aucun pilote Unicode n’est disponible pour qu’il fonctionne avec. Le Gestionnaire de pilotes mappe les fonctions Unicode et les types de données à ANSI. Certaines restrictions sont imposées aux mappages UNICODE aux mappages ANSI qui peuvent être effectués. L’existence d’un pilote Unicode pour l’application Unicode à utiliser entraînera de meilleures performances et supprimera les restrictions inhérentes aux mappages UNICODE aux mappages ANSI.