[gelöst] QByteArray und UTF-16

Alles rund um die Programmierung mit Qt
Antworten
Nemesis
Beiträge: 20
Registriert: 19. Oktober 2007 09:51
Wohnort: Erlangen

[gelöst] QByteArray und UTF-16

Beitrag von Nemesis »

Hallo,
ich habe ein Problem beim Parsen einer UTF16-Xml-Datei.
Der ursprüngliche Code war folgender:

Code: Alles auswählen

 bool XmlManager::myParseXmlFunc(QString aFilename)
{
   QFile aFile(aFilename);
   QString aErrorMessage;
    int aLine, aColumn;
   if(!myDomDocument.setContent(&aFile, &aErrorMessage, &aLine, &aColumn)
{
Damit hat alles gut geklappt. Jetzt möchte ich aber nicht mehr aus dem File lesen. Jetzt bekommt die Funktion ein QByteArray übergeben:

Code: Alles auswählen

 bool XmlManager::myParseXmlFunc(QByteArray aMessageBuffer)
{
      QString aErrorMessage;
    int aLine, aColumn;
   if(!myDomDocument.setContent(aMessageBuffer, &aErrorMessage, &aLine, &aColumn)
{
Das funktioniert nicht mehr, jetzt bekomme ich eine Meldung, dass es ein Problem beim Parsen vom ersten Zeichen gibt.
Ich nehme mal an, dass es daran liegt, dass der Inhalt von dem QByteArray in UTF-16 ist, aber das nicht -wie bei dem QFile- automatisch erkannt wird.
Kann mir da vielleicht jemand weiterhelfen?
Zuletzt geändert von Nemesis am 12. Februar 2008 09:24, insgesamt 1-mal geändert.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Siehe http://doc.trolltech.com/4.3/qdomdocume ... setContent
It tries to detect the encoding of the document as required by the XML specification.
d.h. das ist bei Dir falsch. Übergib einen QString und fertig.


Außerdem übergibt man besser const QString &string und const QByteArray &array anstatt lokale Kopien erzeugen zu lassen.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Nemesis
Beiträge: 20
Registriert: 19. Oktober 2007 09:51
Wohnort: Erlangen

Beitrag von Nemesis »

Hab aber auch gerade festgestellt, dass in dem ByteArray, welches ich übergeben habe, Fehler drin waren :oops:
Jetzt funktioniert es so.
Aber trotzdem vielen Dank für die Tipps. Werde das mit dem Referenzen auch gleich mal ändern :)
Antworten