Problem mit Umlauten u.ä.
-
Ich bekomme von einer Funktion einen String der Umlaute leider in eine 2 Byte Zeichensequenz umgewandelt hat. (z.B. Ö -> C396h, Ä -> C384h)
Jetzt suche ich eine Winapi Funktion die dies wieder rückgängig macht. Mir würde auch reichen wie dieses Kodierungssystem heißt (dann kann man ja danach suchen...)
Vielen Danke schon mal...
-
Das müßte UTF-8 sein.
-
Danke. Scheint aber doch keine Winapi Fkt. zu geben (Dachte weil Notepad das ohne Probleme dargestellt hatte).
-
In der WinAPI gibt's Konvertierungsfunktionen wie
WideCharToMultiByte
MultiByteToWideCharDa müßte (mit der richtigen Codepageangabe) auch Deine Variante möglich sein.
-
Danke, hast recht. Man muss zwar über Unicode gehen (wüsste jetzt sonst nicht wie) - aber so geht es:
bool Utf8ToAnsi(CString& str) { int len = str.GetLength(); WCHAR* temp = new WCHAR[len + 1]; len = MultiByteToWideChar(CP_UTF8,0,str,len,temp,len); if(len > 0) { temp[len] = 0; str = temp; } delete[] temp; return len > 0; }