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
    MultiByteToWideChar

    Da 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;
    }
    

Log in to reply