ich habe ein XML File ausgelesen und möchte es wieder in eine Datei speichern. Ich habe jetzt schon etliche Möglichkeiten durch aber ich bekomme immer irgendwelche Sonderzeichen am Anfang der neuen Datei. Diese stehen aber im ursprünglichen String den ich speichern will nicht drin!
Was ist daran falsch? Immer wenn ich den String oder ein ByteArray speichere steht an manchen stellen Müll in der Ausgabedatei! In der Konfiguration wie sie hier gezeigt ist, "nur noch" an der ersten Stelle. Reicht aber auch um die XML ungültig zu machen.
Schau ich mir das im Debugger an stimmt alles, auch wenn ich es nach utf8, utf16 oder unicode konvertiere!
Zuletzt geändert von mathies am 10. November 2008 10:49, insgesamt 1-mal geändert.
Ist schon schwer mit den korrekten Encodings. Vor allem wenn man chars benutzt um Unicode zu speichern, anstatt die angebotenen Klassen zu nutzen. Ein paar Stichworte: QTextStream, QXmlStreamReader und QXmlStreamWriter.
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
Wenn Du es mit dem TextStream nicht hinbekommen hast, wirst du mit QXmlStreamWriter auch Probleme haben. Dann hast Du mit Sicherheit das setCodec vergessen. Damit eine Textdatei korrekt eingelesen werden kann, muss sofort klar sein wie der Text kodiert ist. Und das steht dann in den ersten 2 Bytes. http://de.wikipedia.org/wiki/Textdatei#Zeichencodierung
Wenn die angegebene Kodierung nicht mit dem gespeicherten Text überein stimmt, dann hast Du wieder kryptische Zeichen im Text. Einfachste Form ist also einen TextStream zu nehmen, Kodierung auf UTF-8, und den dann mit QStrings zu füttern.
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
Also mit dem QXMLStreamWriter klappt es ganz gut bis jetzt. Muss halt noch bissl was ändern, da er das ja nur einzeln schreibt aber so kann ich wenigstens noch ein paar Einstellungen machen.
Ich hatte den codec eigentlich immer gesetzt aber irgendwo fand sich immer so ein komisches Zeichen..