Seite 1 von 1
[gelöst] XML in UTF8 speichern?
Verfasst: 7. November 2008 14:13
von mathies
Hallo,
ich habe ein Config-XML-File welches in UTF8 geschrieben ist. Darin möchte ich Werte ändern und das auch wieder in UTF8 speichern. Egal was ich mache, wie z.B.:
Code: Alles auswählen
QByteArray newXml = domDocument.toString(4).toUtf8();
oder
domDocument.save(newXml, 4, QDomNode::EncodingFromDocument);
das Dokument wird immer im UTF16 Format gespeichert, welches das auszuführende Programm nicht unterstützt.
Wie bekomme ich das hin, dass das XML Dokument in UTF8 gespeichert wird?
Verfasst: 7. November 2008 15:08
von Christian81
Wenn Du
machst ist in QByteArray *immer* eine utf-8 kodierte Zeichenkette. Du speicherst sie wohl nur falsch.
Verfasst: 7. November 2008 15:15
von mathies
Hallo,
ich speichere über QFile und da habe ich keinerlei Einstellungen für Kodierungen gefunden
Code: Alles auswählen
QFile xmlfile( "config.xml" );
if(!xmlfile.open( QIODevice::ReadWrite ) )
{
return false;
}
QByteArray newXml = domDocument.toString(4).toUtf8();
xmlfile.write(newXml);
xmlfile.close();
Was ändert da die Kodierung?
Verfasst: 7. November 2008 15:28
von Christian81
Das was da geschrieben wird ist utf-8 kodiert.
Verfasst: 7. November 2008 15:34
von mathies
Hallo,
naja, ich schau dann mal weiter. Die erste Zeile wird immer geändert in <?xml version='1.0' encoding='utf-16'?>.
Danke nochmal.
Verfasst: 7. November 2008 15:37
von Christian81
Da haben wir uns wohl falsch verstanden - Deine Beschreibung suggerierte dass die Datei utf-16 kodiert abgespeichert wird. Dies wird sie definitiv nicht. Es steht nur irgendwo im Text utf-16 drin.
Das musst Du wohl von Hand ändern.
Verfasst: 7. November 2008 15:40
von mathies
Aso,
dann muss ich das wohl machen. Das Programm was die Config verwendet stürzt sich wohl genau darauf.
Danke.
Verfasst: 7. November 2008 15:56
von Christian81
Ja - klar das Programm muss sich drauf verlassen was angegeben ist. Das Du das erst umwandelst ist ja nicht die Schuld von xml

Aber probiere mal gleich nach QByteArray zu wandeln -> QDomDocument::toByteArray() - da weiß dann QDomDocument dass es als utf8 speichern soll.