Bonjour je cherche une petite fonction testée permettant de convertir de l'utf8 en ASCII Uppercase
Avez-vous déja rencontré cela ?
Merci
Bonjour je cherche une petite fonction testée permettant de convertir de l'utf8 en ASCII Uppercase
Avez-vous déja rencontré cela ?
Merci
Les fonctions à utiliser seront mbtowc et toupper. La manière d'utiliser la première varie en fonction du système d'exploitation et du compilateur. Quel OS et quel compilateur utilises-tu donc ?
Salut
J'utilise VS 6.0.
J'ai trouvé mbtowc que je ne connaissais pas.
Maintenant comment faire pour l'utiliser ?
J'ai une chaine exemple : comment faire pour detecter la présence d'un caractère multi-byte et sa longueur pour le convertir ?
Mühldorf am Inn, gemeindefreies Gebiet
En fait je pense que ce n'est pas de l'utf8 mais du MBCS
M<195><188>hldorf am Inn, gemeindefreies Gebiet
La version de mbstowcs de Visual ne supporte pas l'UTF-8, tu devras faire appel à l'API Windows, à savoir à la fonction MultiByteToWideChar. Cette fonction permet d'encoder une chaîne de caractères en UTF-16 (wide character string), l'encodage natif de Windows.
Ce programme affiche "Mühldorf am Inn, gemeindefreies Gebiet" (premier MessageBox) ensuite la même phrase en lettres capitales (deuxième MessageBox).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 #include <stdio.h> #include <windows.h> int main() { const char * buf = "Mühldorf am Inn, gemeindefreies Gebiet"; wchar_t outbuf[100]; MultiByteToWideChar(CP_UTF8, 0, buf, -1, outbuf, sizeof(outbuf) / sizeof(outbuf[0])); MessageBoxW(NULL, outbuf, L"Message", 0); CharUpperBuffW(outbuf, sizeof(outbuf) / sizeof(outbuf[0])); MessageBoxW(NULL, outbuf, L"Message", 0); return 0; }
Une chaîne UTF-8 est un MBCSEn fait je pense que ce n'est pas de l'utf8 mais du MBCS.
Merci melem
Je vais essayer cela
Meci melem
Ca fonctionne "presque"
- Mon app est en console donc j'ai du inclure windows.h "de force", mais pas de problème
- Le resultat est en integer que j'aimerais convertir en ANSI : tu sais comment ? (a part faire un boucle sur chaque element)
- La methode CharUpperBuffW(outbuf, sizeof(outbuf)); ne rends pas un vrai code ASCII Majuscule (A-Z) je vais donc utiliser une table de conversion mais j'ai l'habitude, le plus important c'etait l'utilisation de MultiByteToWideChar pour transformer cet utf-8
Partager