QByteArray -> Umlaute



  • Hallo liebe Forengemeinde,

    ich habe folgendes Problem. (Qt 4.7.4 mit Qt Creator; MinGW; Win7)

    Ich downloade eine Datei mit HTML Code, die Umlaute enthält(werden mit Firefox richtig dargestellt). Nun lese ich diese Datei via datei.readAll() ein und erhalte ein QByteArray. Wenn ich dieses im Debugger durchsuche oder mit byteArray.contains("ü") oder andere Varianten teste, finde ich nie ein ü. Auch nicht weiter wild, da es ja vllt anders kodiert ist oder nen anderen Zeichencode benutzt. Lass ich das aber im QTextEdit mit setHTML() anzeigen werden aus den ü´s und anderen Zeichen schnell mal wilde Sonderzeichen. Auch ein toPlainText() liefert dies dummen Zeichen aus dem textEdit. Wie kann ich das beheben. WO muss man den Zeichensatz einstellen. Bin echt ratlos...

    Danke für eure Hilfe 👍



  • Wenn du setHtml das QByteArray übergibst, wird daraus ein QString gemacht, verwendet wird der Konstruktor QString(const QByteArray& ba).

    Daher das ByteArray erst mittels der QString Konvertierungsmethoden in einen QString konvertieren und dann an das QTextEdit übergeben. ALso zB QString::fromUtf8().

    Alternativ (wenn den den Codec nicht selbst ermitteln willst) benutzt du QTextCodec:
    QTextCodec* QTextCodec::codecForHtml (const QByteArray& ba) [static]
    liefert die den Codec,
    QString QTextCodec::toUnicode (const QByteArray& a) const
    den QString.

    Und den dann wieder ans QTextEdit.



  • Vergessen zu erwähnen:
    Der Konstruktor QString(const QByterArray&) verwendet ein QString::fromAscii, was dann wohl für die kryptischen Zeichen verantwortlich ist.



  • Wunderbar! Vielen Dank 👍


Anmelden zum Antworten