Partager via


Différences entre les fonctions de chaîne

Cette rubrique décrit les différences entre les fonctions de chaîne utilisées dans la gestion des informations de jeu de caractères et Unicode. Ces fonctions ont à la fois Unicode et page de codes Windows implémentations pour prendre en charge les paramètres de page de codes Unicode et Windows.

Les fonctions de chaîne suivantes ne nécessitent pas de commentaire spécial. Leurs implémentations de page de codes Unicode et Windows fonctionnent de manière identique.

La valeur de longueur récupérée par l’une des fonctions de longueur de chaîne est toujours basée sur la largeur normale des caractères : 8 bits pour les pages de codes Windows, 16 bits pour Unicode. Cette valeur est souvent appelée « nombre de caractères ». Ce terme est strictement correct, car les pages de codes Windows qui utilisent jeux de caractères codés sur deux octets (DBCS) ont des caractères à pleine largeur qui sont réellement représentés par deux octets consécutifs. Une situation similaire survient pour substituts dans Unicode.

Les fonctions de chaîne suivantes sont sensibles aux paramètres régionaux du thread actuel, dérivées de la langue sélectionnée par l’utilisateur dans le Panneau de configuration. Les fonctions lstrcmp et lstrcmpi n’effectuent pas de comparaisons d’octets comme leurs noms ANSI, par exemple strcmp. Au lieu de cela, ils comparent les chaînes en fonction des règles des paramètres régionaux.

Les fonctions suivantes sont converties entre le jeu de caractères OEM et la page de codes Windows actuelle ou Unicode, selon la version utilisée :

Les fonctions d’impression, par exemple, StringCbPrintf, prennent en charge Unicode en fournissant les types de données nouveaux et modifiés suivants dans leurs spécifications de format. Ces spécifications de format affectent la façon dont les fonctions interprètent le paramètre d’entrée correspondant.

Spécification de format Type de données pour la version de la page de codes Windows Type de données pour la version Unicode
c CARBONISER WCHAR
C WCHAR CARBONISER
hc, hC CARBONISER CARBONISER
hs, hS LPSTR LPSTR
lc, lC WCHAR WCHAR
ls, lS LPWSTR LPWSTR
s LPSTR LPWSTR
S LPWSTR LPSTR

 

Le type de données du texte de sortie dépend toujours de la version de la fonction. Lorsque le type de données du paramètre d’entrée et le type de données du texte de sortie ne sont pas d’accord, la fonction d’impression effectue une conversion d’Unicode vers la page de codes Windows actuelle, ou inversement, selon les besoins.

Pour la version Unicode des fonctions d’impression, la chaîne de format est Unicode, comme le texte de sortie.

Prudence

Une mauvaise gestion des mémoires tampons est impliquée dans de nombreux problèmes de sécurité qui impliquent des dépassements de mémoire tampon. Consultez de référence Strsafe.h . Les fonctions définies dans Strsafe.h fournissent un traitement supplémentaire pour la gestion appropriée des mémoires tampons dans votre code. Pour cette raison, ils sont destinés à remplacer leurs équivalents C/C++ intégrés ainsi que des implémentations Microsoft Windows spécifiques. Pour plus d’informations, consultez Considérations relatives à la sécurité : Fonctionnalités internationales.

 

Unicode dans le de l’API Windows