Alles rund um die Programmierung mit Qt
mathies
Beiträge: 149 Registriert: 9. Februar 2007 17:50
Wohnort: Erfurt
Beitrag
von mathies » 7. November 2008 14:13
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?
Zuletzt geändert von
mathies am 7. November 2008 15:41, insgesamt 1-mal geändert.
Christian81
Beiträge: 7319 Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:
Beitrag
von Christian81 » 7. November 2008 15:08
Wenn Du
machst ist in QByteArray *immer* eine utf-8 kodierte Zeichenkette. Du speicherst sie wohl nur falsch.
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
mathies
Beiträge: 149 Registriert: 9. Februar 2007 17:50
Wohnort: Erfurt
Beitrag
von mathies » 7. November 2008 15:15
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?
Christian81
Beiträge: 7319 Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:
Beitrag
von Christian81 » 7. November 2008 15:28
Das was da geschrieben wird ist utf-8 kodiert.
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
mathies
Beiträge: 149 Registriert: 9. Februar 2007 17:50
Wohnort: Erfurt
Beitrag
von mathies » 7. November 2008 15:34
Hallo,
naja, ich schau dann mal weiter. Die erste Zeile wird immer geändert in <?xml version='1.0' encoding='utf-16'?> .
Danke nochmal.
Christian81
Beiträge: 7319 Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:
Beitrag
von Christian81 » 7. November 2008 15:37
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.
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
mathies
Beiträge: 149 Registriert: 9. Februar 2007 17:50
Wohnort: Erfurt
Beitrag
von mathies » 7. November 2008 15:40
Aso,
dann muss ich das wohl machen. Das Programm was die Config verwendet stürzt sich wohl genau darauf.
Danke.
Christian81
Beiträge: 7319 Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:
Beitrag
von Christian81 » 7. November 2008 15:56
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.
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung