Seite 1 von 1

[Bug in Qt]XML und Unicode

Verfasst: 6. August 2006 13:36
von BartSimpson
Hallo ich erzeuge eine XML Datei mit Unicode Zeichen nur leider werden die UTF Zeichen unter Firefox und IE nicht richtig dargestellt.
Hier ein Auszug der erzeugten XML Datei.
<!DOCTYPE Kurzwahlnummern>
<Kurzwahlnummern>
<Speicherplätze gesamt="200" benutzt="3" />
<Eintrag>
<Beschreibung>Mailbox abhören</Beschreibung>
<Rufnummer>49900</Rufnummer>
<Nummerparameter NPI="0" TON="2" />
</Eintrag>
<Eintrag>
<Beschreibung>Mailbox ein</Beschreibung>
<Rufnummer>49900</Rufnummer>
<Nummerparameter NPI="0" TON="2" />
</Eintrag>
<Eintrag>
<Beschreibung>ADAC Pannenhilfe</Beschreibung>
<Rufnummer>49900</Rufnummer>
<Nummerparameter NPI="0" TON="2" />
</Eintrag>
</Kurzwahlnummern>
Diese Zeilge geht schief:
<Beschreibung>Mailbox abhören</Beschreibung>
wo hingegen
<Speicherplätze gesamt="200" benutzt="3" />
funktioniert.
Was muss geänder werden, damit es geht?
Wo muss man sagen das, die Inhalte UTF sind??

Code: Alles auswählen

QDomElement Wurzel = XML.createElement("Kurzwahlnummern");
QDomElement Speicherplatz= XML.createElement("Speicherplätze");
Speicherplatz.setAttribute("gesamt",AnzahlDerSpeicherplaetze);
XML.appendChild(Wurzel);
Wurzel.appendChild(Speicherplatz);
QDomElement Eintrag=XML.createElement("Eintrag");
Wurzel.appendChild(Eintrag);
QDomElement Beschreibung=XML.createElement("Beschreibung");
QDomElement Rufnummer=XML.createElement("Rufnummer");
QDomElement Nummerparameter=XML.createElement("Nummerparameter");
QDomText BeschreibungText=XML.createTextNode("öäü");
QDomText RufnummerText=XML.createTextNode("49900");
Nummerparameter.setAttribute("TON",2);
Nummerparameter.setAttribute("NPI",0);
Eintrag.appendChild(Beschreibung);
Eintrag.appendChild(Rufnummer);
Eintrag.appendChild(Nummerparameter);
Beschreibung.appendChild(BeschreibungText);
Rufnummer.appendChild(RufnummerText);
QFile Datei("text.xml");
Datei.open(QIODevice::WriteOnly|QIODevice::Truncate);	
QTextStream Strom(&Datei);
Strom<<XML.toString();
Strom.flush();
Datei.close();

Verfasst: 6. August 2006 14:35
von FlorianBecker
Du musst als Doctype UTF8 Dokument setzen.

Wobei es mit dem Umlauten irgendwie seltsam ist, ich weiß das zwar nicht so ganz genau, wie das nun ist, aber ich weiß das die Konvertierten XML Umlaute immer gehen also

Code: Alles auswählen

& # 2 5 2 ;
für ü usw (ohne Leerzeichen).

Wäre allerdings auch dankbar, wenn das hier einmal jemand als Gesamtpaket erklären könnte, wie und warum das mit den Umlauten wie zu funktionieren hat.

Mehr ein XML Thema als ein Qt Thema aber egal.

Verfasst: 6. August 2006 15:03
von BartSimpson
Nur wie es gibt zwar ein QDomDocument.doctype () aber kein
setDoctype ()???

Verfasst: 6. August 2006 15:44
von FlorianBecker

Verfasst: 6. August 2006 16:10
von BartSimpson
nur leider klappt das nicht:(
Der Fehler bleibt.
Verstümmelte Zeichen im Firefox und Fehlermeldung beim IE::(
Es sieht so aus als ob die Texte nicht als UTF gespeichert werden.

Verfasst: 6. August 2006 18:17
von BartSimpson
So jetzt habe ich mir die Sache mal im Hexeditor angeschaut.
Und muss sagen sehr merkwürdig.
Hier das Beispiel:
<Speicherplätze gesamt="200" benutzt="3" />
<Eintrag>
<Beschreibung>Mailbox abhören</Beschreibung>
<Rufnummer>49900</Rufnummer>
das ö bei anhören wird korrekt mit C3 B6 codiert.
Aber das ä bei Speicherplätze wird als C3 83 C2 A4 codiert:(
Hat da jemand eine Idee?

Verfasst: 6. August 2006 19:13
von BartSimpson
So nach eigen Experiementen musste ist festellen, das es in der Windowsversion ein Bug ist. Denn unter Linux geht es.

Verfasst: 8. August 2006 14:33
von BartSimpson
Für alle die es interissert, die Tasknummer ist 125136.