Seite 1 von 1
Umlaute umwandeln
Verfasst: 5. November 2008 14:06
von nexus
Ich hab folgendes Problem und zwar ich les Text von Webseiten aus, wenn ich diesen jedoch ausgeben möchte werden die Umlaute nicht richtig dargestellt. Die Methoden toUtf8, toLatin1, etc. brachten keine Änderung. Wie kann ich es erreichen das diese Korrekt dargestellt werden?
Verfasst: 5. November 2008 15:02
von Christian81
Etwas mehr Infos und Codestücke wären nicht schlecht.
Wo ausgeben? Wie versuchst Du es auszugeben,...
Verfasst: 5. November 2008 15:15
von nexus
Ich lese eine Webseite ein, etwa so
Code: Alles auswählen
hlp = parseHtml(data, "href=\"(plot/)(.*)\"", "get_one", pos);
buffer->open(QBuffer::WriteOnly);
http->setHost(server);
http->get("/" + hlp.at(0) + hlp.at(1), buffer);
filteren dann noch mit weiteren regulären ausdrücken den text.
Es ist egal wie ich dann den Text aus gebe (in einem label, textedit, konsole, etc.) die umlaute sehen dann bspw. so aus: zerstören
Verfasst: 5. November 2008 15:17
von Christian81
was ist parseHTML (bzw. was gibt er zurück), welcher Datentyp ist hlp.
Wenn man einen QString in ein QTextEdit schreibt muss man nichts wandeln.
Verfasst: 5. November 2008 15:26
von nexus
parseHtml durchsucht einen buffer anhand des übergebenen regulären ausdrucks und gibt die resultate als QStringList zurück. Wenn ich diese jedoch mit der methode setText in ein QTextEdit schreibe sehen die Umlaute wie im vorherigen Post zu sehen aus
Verfasst: 5. November 2008 15:44
von Christian81
Da parseHTML einen QString zurückliefert, Du aber in QBuffer ein QByteArray hast wird wohl da eine Umwandlung fehlen...
Verfasst: 5. November 2008 16:17
von nexus
Und was für eine?
Verfasst: 5. November 2008 16:20
von Christian81
Von dem Encoding die die heruntergeladene Website hat in QString. Woher sol ich wissen welches Encoding die Website hat?
Verfasst: 6. November 2008 13:03
von nexus
QByteArray bietet jedoch keine Methode um die zeichencodierung zu ändern, desweiteren verstehe ich auch nicht washalb dies im QString nicht mehr möglich ist.
Verfasst: 6. November 2008 13:28
von Christian81
QByteArray bietet keine Methode da QByteArray das nicht kann - in QByteArray stehen einfach nur irgendwelche Zeichen. Was für eine Kodierung die haben ist dem QByteArray total egal. Die QString-Doku wird dir aber sicherlich weiterhelfen... (QString::fromXXX())
Verfasst: 6. November 2008 13:47
von nexus
Bleibt nur noch die Frage in welches Format ich umwandeln muss, damit die Umlaute korrekt dargestellt werden, Utf8?
Verfasst: 6. November 2008 15:40
von Christian81
nexus hat geschrieben:Bleibt nur noch die Frage in welches Format ich umwandeln muss, damit die Umlaute korrekt dargestellt werden, Utf8?
Was fragst Du mich das ständig? Woher sollen wir wissen welches Encoding Deine Website welche Du herunterlädst hat??
Verfasst: 6. November 2008 16:21
von nexus
Ich will nicht Wissen welches encoding die Seite hat sondern in welches ich umwandeln muss, damit die umlaute bspw. im QTextEdit korrekt dargestellt werden....
Verfasst: 6. November 2008 16:41
von Christian81
QString benutzt utf16, aber das kann Dir total egal sein. Du musst wissen welches Encoding die Website benutzt damit Du diese Daten dann in einen korrekten QString wandeln kannst!
Verfasst: 7. November 2008 11:42
von gerome69
nexus hat geschrieben:Ich will nicht Wissen welches encoding die Seite hat sondern in welches ich umwandeln muss, damit die umlaute bspw. im QTextEdit korrekt dargestellt werden....
QString ist voll Unicode-fähig. Du mußt also von der Codierung deiner Webseite umwandeln. Was steht denn im HTML für eine Codierung.
Link zu "deiner" Webseite würde weiterhelfen.
G.