?
So, hatte endlich wieder etwas Zeit...
Ich habe das scheinbar jetzt hinbekommen. Vermutlich trickse ich etwas zu viel:
string l_response = ....;
int l_laengeXml = utf8::distance(l_response.begin(), l_response.end());
TCHAR* xmlBuffer = new TCHAR[l_laengeXml];
utf8::utf8to16 (l_response.begin(), l_response.end(), xmlBuffer);
l_response = string(xmlBuffer).substr(0, l_laengeXml);
delete[] xmlBuffer;
Damit kommt der Kram bei mir korrekt an.
Witzig ist nur, dass das Ganze auch ohne ein #define UNICODE funktioniert .
btw: UNICODE oder _UNICODE (OK, laut MSN ist _UNICODE richtig)?
---
Aber erst einmal Danke an Euch alle für Eure Zeit und die ertragenen Schmerzen!
---
Nachtrag:
Ich überlege gerade, ob das 'Zurückkopieren' in den String eigentlich korrekt ist oder nur (wie in meinem Fall) im unteren Bereich des Zeichensatzes funktioniert.
Ausserdem kommt mir der Teil mit der Länge des Buffers komisch vor, der wurde immer zu lang angelegt, weshalb ich am Ende immer Hieroglyphen hatte und das substr eingeführt habe.
Das und der Umstand, dass das alles auch ohne #define _UNICODE funktioniert, kann ich mir nicht so recht erklären, ausser, dass _UNICODE evtl. an anderer Stelle definiert wird. Ich habe aber meine Sourcen (inkl. benutztem externen Wrapper) geprüft - auch utf8cpp - ich kann da nichts finden.
Habt Ihr eine Idee? Ich würde das gern noch etwas mehr verstehen.