J'ai un projet dll, écrit en codage Windows-1251, et j'ai besoin de la sortie de ma dll codée en UTF-16. J'utilise la fonction suivante pour faire la conversion:Win1251-> conversion UTF16
ptr = MultiByteToWideChar(CP_ACP, 0, str, -1, wbuff.getBuffer(), len);
Malheureusement, MultiByteToWideChar utilise paramètres régionaux du système comme source d'encodage. Par exemple, si mon environnement local Windows est l'anglais (USA), il convertit Win1252-> UTF8, pas Win1251-> UTF8 comme j'ai besoin.
J'ai essayé de mettre en valeur manuellement, mais le code suivant ne fonctionne pas non plus:
enc = setlocale(CL_ALL, "rus_rus.1251");
//this returns Windows-1251 encoding
ptr = MultiByteToWideChar(CP_ACP, 0, str, -1, wbuff.getBuffer(), len);
Si je comprends bien, MultiByteToWideChar utilise toujours un lieu de système, ignorant mon appel setlocale.
Existe-t-il d'autres méthodes pour effectuer une telle conversion? Ou peut-être que je ne comprends pas ces paramètres régionaux correctement? Merci.
P.S. Je suis désolé pour les erreurs de grammaire.