Seite 1 von 1

QTextStream und QDataStream

Verfasst: 3. Januar 2011 15:50
von darkshine
Ich habe eine XML-Datei eingelesen und dann einige Änderungen daran vorgenommen. Am Ende habe ich einen QString den ich in eine Datei schreiben möchte.

Code: Alles auswählen

QFile file("Test.ts");
file.open(QIODevice::WriteOnly);
         
QDataStream out(&file);	
out << xmlstring.toAscii();

file.close();

Dann schreibt er mir aber in die erste Zeile
Ef<?xml version='1.0' encoding='utf-8'?>

Woher kommen diese ersten vier Zeichen? In meinem String selber kommen Diese nicht vor.

Wenn ich stattdessen

Code: Alles auswählen

QFile file("Test.ts");
file.open(QIODevice::WriteOnly);
         
QTextStream out(&file);	
out << xmlstring;

file.close();
verwende, dann sind diese Zeichen verschwunden. Aber alle Sonderzeichen wie Ä usw werden falsch dargestellt.

Diese XML bringt mich noch zur Verzweiflung :(

Verfasst: 3. Januar 2011 15:59
von darkshine
als Ergänzung: Vor dem "Ef" stehen noch 2 Leerzeichen. Deshalb 4 zusätzliche Zeichen aus dem "Nichts".

<?xml version='1.0' encoding='utf-8'?> ist das was ich erwarten würde.

Re: QTextStream und QDataStream

Verfasst: 3. Januar 2011 16:06
von franzf
XML == Text -> QTextStream
darkshine hat geschrieben:verwende, dann sind diese Zeichen verschwunden. Aber alle Sonderzeichen wie Ä usw werden falsch dargestellt.
WO zeigst du das an? Hoffentlich in einem UTF8-fähigen Texteditor. Ich bin mir zu 100% sicher, dass das nicht der Fall ist (wenn der Editor UTF8 kann, hast du die Datei mit einem anderen Encoding geladen).

Verfasst: 4. Januar 2011 08:03
von darkshine
Vielen Dank!

in.setCodec("UTF-8");

Das war die Lösung.
Mein Problem war, dass ich es schon oft bei der Ausgabe gesetzt hatte.
out.setCodec("UTF-8");

Aber ich hatte wohl gestern ein Brett vorm Kopf und hatte es nie vor dem Einlesen gesetzt.