WideCharToMultiByte |
kernel32.dll | Caractère Unicode à multiple octets |
---|---|---|
Windows 9X, NT 3.1+, 2000, XP, 2003 |
Syntaxe
int WideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, LPSTR lpMultiByteStr, int cchMultiByte, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar); |
Paramètres
Nom | Description | |
---|---|---|
CodePage | Ce paramètre permet d'indiquer le code de page permettant d'effectuer la conversion | |
Constante | Description | |
CP_ACP | Cette constante permet d'indiquer le code de page ANSI de Windows | |
CP_MACCP | Cette constante permet d'indiquer le code de page du système Macintosh | |
CP_OEMCP | Cette constante permet d'indiquer le code de page du système OEM courant | |
CP_SYMBOL | Cette constante permet d'indiquer le code de page de symbole (Windows 2000) | |
CP_THREAD_ACP | Cette constante permet d'indiquer le code de page ANSI de Windows pour le processus léger courant (Windows 2000) | |
CP_UTF7 | Cette constante permet d'indiquer qu'il faut forcer une transformation en un mécanisme 7 bits en UTF-7. | |
CP_UTF8 | Cette constante permet d'indiquer le code de page UTF-8. | |
dwFlags | Ce paramètre permet d'indiquer les options attribué au type de conversion | |
lpWideCharStr | Ce paramètre permet d'indiquer un pointeur vers une chaîne de caractères Unicode à convertir | |
cchWideChar | Ce paramètre permet d'indiquer la taille en caractères, de la chaîne de caractères spécifié par «lpWideCharStr». | |
lpMultiByteStr | Ce paramètre permet d'indiquer un pointeur vers un tampon recevant la chaîne de caractères à convertir. | |
cbMultiByte | Ce paramètre permet d'indiquer la taille, en octets, du tampon spécifié par «lpMultiByteStr». | |
lpDefaultChar | Ce paramètre permet d'indiquer un pointeur vers le caractère utilisé quand il n'y a pas de représentation du code de page spécifié. | |
lpUsedDefaultChar | Ce paramètre permet d'indiquer un pointeur vers un drapeau indiquant si la fonction a utiliser un caractère par défaut dans la conversion. |
Description
Cette fonction permet de cartographier une chaîne de caractères Unicode en une nouvelle chaîne de caractères.
Remarques
- A partir de la Windows 8, cette fonction n'est plus déclaré dans le fichier d'entête «Winnls.h» mais plutôt dans «Stringapiset.h».
- Les pointeurs des variables lpMultiByteStr et lpWideCharStr ne doivent pas pointer au même endroit car sinon la fonction retournera un code d'erreur «ERROR_INVALID_PARAMETER» lorsque vous appellerez la fonction «GetLastError».
- Cette fonction ne met pas de terminaison nulle dans la chaine de caractères de sortie si la longueur de la chaine de caractères d'entrée est explicitement spécifié sans caractère de terminaison nulle.
- Si la longueur de la chaine de caractères de cbMultiByte est inférieur à la longueur de la chaine de caractères cchWideChar, la fonction écrira le nombre de caractères spécifié par la variable cbMultiByte vers le tampon indiquer par lpMultiByteStr.
- Contrairement à la fonction wcstombs du langage C pour Linux, la valeur n'est pas exclusivement destiné à l'Unicode UTF-16.
Exemple
Voici quelques exemples typiques de l'utilisation de cette fonction :
- #include <stdio.h>
- #include <stdlib.h>
- #include <windows.h>
-
- int main()
- {
- wchar_t chaine[] = L"\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE";
- wchar_t gladir[] = L"gladir.com";
- char chaineNormal[255];
- size_t tailleRequise = WideCharToMultiByte( 950, 0, chaine, -1, NULL, 0, NULL, NULL);
- printf("Octet requis pour l'encodage CP950 (avec la terminaison NUL): %u\n", tailleRequise);
- tailleRequise = WideCharToMultiByte( CP_UTF8, 0, chaine, -1, NULL, 0, NULL, NULL);
- printf("Octet requis pour l'encodage UTF-8 (avec la terminaison NUL): %u\n", tailleRequise);
- int result = WideCharToMultiByte(CP_UTF8, 0, (LPCWSTR) chaine, 2, chaineNormal, sizeof(chaineNormal), NULL, NULL);
- printf("%s\n", chaineNormal);
- result = WideCharToMultiByte(CP_UTF8, 0, (LPCWSTR) gladir, 2, chaineNormal, sizeof(chaineNormal), NULL, NULL);
- printf("gladir.com = %s\n", chaineNormal);
- return 0;
- }
on obtiendra le résultat suivant :
Octet requis pour l'encodage CP950 (avec la terminaison NUL): 7Octet requis pour l'encodage UTF-8 (avec la terminaison NUL): 13
???¬?"
gladir.com = gl?¬?"
Dernière mise à jour : Dimanche, le 6 décembre 2015