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...