Ich habe ein DLL-Projekt, in Windows-1251-Codierung geschrieben, und ich brauche meine DLL-Ausgabe in UTF-16 kodiert. Ich verwende die folgende Funktion Umwandlung zu tun:Win1251-> UTF16 Umwandlung
ptr = MultiByteToWideChar(CP_ACP, 0, str, -1, wbuff.getBuffer(), len);
Leider MultiByteToWideChar Systemgebietsschema als Quelle-Codierung verwendet. Wenn zum Beispiel mein Windows-Gebietsschema Englisch (USA) ist, konvertiert es Win1252-> UTF8, nicht Win1251-> UTF8, wie ich es brauche.
Ich habe versucht, locale manuell einstellen, aber der folgende Code funktioniert auch nicht:
enc = setlocale(CL_ALL, "rus_rus.1251");
//this returns Windows-1251 encoding
ptr = MultiByteToWideChar(CP_ACP, 0, str, -1, wbuff.getBuffer(), len);
Wie ich verstehe, MultiByteToWideChar immer ein Systemgebietsschema verwendet, mein setlocaleQ Anruf zu ignorieren.
Gibt es andere Möglichkeiten, eine solche Konvertierung durchzuführen? Oder kann ich diese Gebietsschemaeinstellungen einfach nicht richtig verstehen? Vielen Dank.
P.S. Es tut mir leid für Grammatikfehler.