QT QString UTF8
-
Hallo zusammen
mein QT-Frontend bekommt vom Server einen UTF8-String als binären Datenblock.
Das Problem ist, dass ich es nicht hinbekommen, den Datenblock als UTF8-QString zu interpretieren und dann korrekt mit Umlauten und Sonderzeichen anzuzeigen.
Wenn ich den Datenblock im Frontend testweise binär in eine Datei schreibe und danach mit Notepad++ öffne, sieht alles gut aus. Umlaute und €-Zeichen werden korrekt anzeigt. Nur der QString in QT ist nicht sauber nach UTF8 konvertiert.
Ich habe es bisher versucht mit:
QString::fromUTF8( const char *, int )
was nicht funktioniert hat.
Und mit
QByteArray ar( Dummy, v ); QTextCodec *codec = QTextCodec::codecForName("GBK"); QString uc = QTextCodec::codecForName( "GBK")->toUnicode(ar); QByteArray data = uc.toUtf8(); QTextCodec *codec2 = QTextCodec::codecForName("UTF-8"); ptr->Headline = codec2->toUnicode(data);
wobei der Datenblock als char* in Dummy liegt und v dessen Laenge ist.
Die Umlaute und Sonderzeichen werden nachwievor nicht korrekt angezeigt.
Jemand Ideen und Vorschläge?
gruß Tobi
-
Keine Ahnung, Byte Order Mark?
-
Vermute dass dein Ausgangsstring nicht GBK sondern eine andere Codierung ist.
Hatten ähnliche Probleme mit einem QProcess welcher Daten aus der Console unter Windows bekam.
Erst die richtige Kodierung machte daraus was brauchbares.
-
Mein Ausgangsstring ist UTF8 - den bekomme ich als Datenblock über einen Socket.
Nur ich scheitere derzeit daran, das ganze als QString sichtbar zu machen.
-
Wo, bzw. wie schaust du dir den QString an? Dieser verwendet intern ja UTF16.
-
Ich kopiere den QString in ein TableWidgetItem und zeige ihn somit an.
-
Welche Bytefolgen werden im Debugger angezeigt?