AfxMessageBox mit UTF-8-String



  • Bei meinem ersten Versuch mit Unicode/UTF-8 hänge ich verzweifelt fest. Weder MSDN noch google noch Forensuche bringen mich weiter...

    Folgender Codeausschnitt funktioniert nicht richtig:

    #define _UNICODE
    CString sBuf;
    sBuf = xmlNodeListGetString(pDoc, pCur1->xmlChildrenNode, 1);
    AfxMessageBox(sBuf);
    

    xmlNodeListGetString liefert einen String im UTF-8-Format.
    In sBuf steht dann dort, wo in der XML z.B. ein ä kodiert ist:
    sbuf[42] = 195(dez) (wird als Ä-ähnliches Zeichen dargestellt)
    sbuf[43] = 164(dez) (wird als x-ähnliches Zeichen dargestellt)

    hex-dez wäre dass dann C3A4. Das Unicode-Zeichen für ä ist jedoch 00E4... Wenn ich die RFC richtig verstanden habe, wäre die entsorechende Kodierung in UTF-8 dann auch E4.

    Lasse ich das "#define _UNICODE" weg, müsste laut MSDN standardmäßig MBCS aktiviert sein. Damit sieht es aber genauso aus (sowohl im Speicher als auch bei der Ausgabe mit AfxMessageBox).



  • Fehler gefunden: Musste erst noch über MultiByteToWideChar in Unicode konvertiert werden...


Anmelden zum Antworten