[gelöst] XML in UTF8 speichern?

Alles rund um die Programmierung mit Qt
Antworten
mathies
Beiträge: 149
Registriert: 9. Februar 2007 17:50
Wohnort: Erfurt

[gelöst] XML in UTF8 speichern?

Beitrag 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?
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 »

Wenn Du

Code: Alles auswählen

QByteArray newXml = domDocument.toString(4).toUtf8(); 
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 »

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 »

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 »

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 »

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 »

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 »

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
Antworten