Moué, faut faire un peu attention avec les chaines unicode, c'est facile d'utiliser les API avec le mauvais encodage.
Tu as l'air d'utiliser l'API Windows. En natif, Windows reconnait deux encodages : code page 8bit (dépendant de la langue) et UTF-16. En UTF-16, les caractères font soit 2 ou 4 octets (l'immense majorité n'en font que 2, ce qui inclus 90% des langues du monde entier, incluant l'Hindi).
Un caractère de 3 octets indique plutôt un encodage en UTF-8, que Windows ne sait pas gérer nativement, mais que tu peux convertir en UTF-16, via la fonction MultiByteToWideChar.
Si tu veux récupérer la taille en octet d'une chaine UTF-16, tu peux utiliser un truc du genre :
Code :
wchar_t msg[] = L"Hello world"; int sz = (wcslen(msg)+1) * 2;
|
Pour récupérer la taille d'une chaine UTF-8, strlen() est suffisante.