Seite 1 von 1
QDomDocument als UTF-16 in eine Datei schreiben. [gelöst]
Verfasst: 6. Februar 2006 15:57
von archer
Hallo,
ich möchte eine XML Datei codiert als UTF-16 wegschreiben. Mein Code
dazu sieht folgendermaßen aus:
Code: Alles auswählen
FctResult CBaseXml::write(QIODevice* apDevice)
{
const int IdentSize = 2;
QTextStream Out;
Out.setDevice(apDevice);
Out.setCodec(QTextCodec::codecForName("UTF-16"));
Out << "<?xml version=\"1.0\" encoding=\"UTF-16\" standalone=\"yes\"?>\n";
_DomDoc.save(Out, IdentSize);
return FCT_SUCCESS;
}
Nur leider scheint das so nicht zu funktionieren.
Kann mir da jemand weiterhelfen?
Mfg
archer
Verfasst: 6. Februar 2006 16:23
von Christian81
Eventuell deswegen 'If QTextStream operates on a string, this function does nothing.' ?
Mhhh
Eventuell erst den QTextStream in einen QString umwandeln (
http://doc.trolltech.com/4.0/qtextstream.html#string) und dann per QString::utf16() speichern? Ist zwar irgendwie umständlich, aber was wil man machen?
Verfasst: 6. Februar 2006 16:36
von Querdenker
Hi,
habe ich gestern auch gefragt. Es steht eine Lösung am Ende der Diskus.
Du must nur UTF-8 in UTF-16 ändern.
QTableWidget und Evens
Verfasst: 6. Februar 2006 16:38
von Querdenker
sry - falscher Eintrag

Verfasst: 7. Februar 2006 07:39
von archer
Ich habe inzwischen mal
Code: Alles auswählen
FctResult CBaseXml::write(QIODevice* apDevice)
{
const int IdentSize = 2;
QTextStream Out;
Out.setDevice(apDevice);
Out.setGenerateByteOrderMark(true);
//Out.setAutoDetectUnicode(false);
Out.setCodec(QTextCodec::codecForName("utf16"));
Out << "<?xml version=\"1.0\" encoding=\"UTF-16\" standalone=\"yes\"?>\n";
//_DomDoc.save(Out, IdentSize);
return FCT_SUCCESS;
}
versucht.
Das klappt auch. Mir scheint das
wobri _DomDoc vom Typ QDomDocument ist, dieses wieder auf utf8 setzt.
Kann ich dem QDomDocument die Kodierung setzen?
[/quote]
Verfasst: 7. Februar 2006 07:42
von Christian81
Hast du meinen Beitrag gelesen?
Eventuell deswegen 'If QTextStream operates on a string, this function does nothing.' ?
Und den Lösungsvorschlag?
/edit Rechtschreibung so früh am morgen...

Verfasst: 7. Februar 2006 08:02
von archer
Hast du meinen Beitra gelesen?
Ja, habe ich gelesen. Werde ich mal Versuchen.
War nur noch mal auf der Suche nach dem Grund, deshalb der andere Versuch.
Verfasst: 7. Februar 2006 08:33
von archer
Hallo Christian81,
hab jetzt mit diesem Code:
Code: Alles auswählen
FctResult CBaseXml::write(QIODevice* apDevice)
{
QTextStream Out;
Out.setDevice(apDevice);
Out.setGenerateByteOrderMark(true);
Out.setAutoDetectUnicode(false);
Out.setCodec(QTextCodec::codecForName("utf16"));
Out << "<?xml version=\"1.0\" encoding=\"UTF-16\" standalone=\"yes\"?>\n";
Out << _DomDoc.toString();
return FCT_SUCCESS;
}
eine Lösung gefunden die zu funktionieren scheint.
In meinem Texteditor wird jetzt utf16 als Codierung angezeigt.
Verfasst: 7. Februar 2006 14:11
von archer
Danke an alle für die Hilfe.