QLabel , QString encoding von Sonderzeichen
Verfasst: 20. November 2014 10:19
Hallo,
habe folgendes Problem was ich noch nicht ganz verstanden habe.
Meine QT-Anwendung läuft in mehreren Ländern und jedes Land hat seine eigenen Sonderzeichen, meine Anwendung bekommt die Texte per TCP/IP gesendet.
Jetzt habe ich mal alle Sonderzeichen die bei mir im moment so vorkommen in den Texten in einen zusammen geschrieben.
"à°ç§éùè¨ÄÖÜüäößòè¡ñçáéšěčířž"
Wenn ich diese Zeichen direkt im QT-Creator / Designer der Text-Eigenschaft von QLabel zuweise werden alle Zeichen angezeigt kommt der Text über die Schnittstelle wird der Text in ein QLabel gespeichert wird dies über qDebug() ausgegeben sind alle Zeichen vorhanden und werden auch richtig in der Konsole angezeigt.
Weise ich jetzt aber über myLabel.setText(myQString) den Text meinem Label zu fehlen Zeichen ich habe auch schon folgendes versucht
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
aber dann werden es nur weniger Zeichen und in der qDebug-Ausgabe stehen viele ??????
Schaue ich in meine ui_....h wo mein Qlabel definiert ist sieht das so aus
myLabel->setText(QApplication::translate("Display_z03", "\303\240\302\260\303\247\302\247\303\251\303\271\303\250\302\250\303\204\303\226\303\234\303\274\303\244\303\266\303\237\303\262\303\250\302\241\303\261\303\247\303\241\303\251\305\241\304\233\304\215\303\255\305\231\305\276", 0, QApplication::UnicodeUTF-8);
der local Codec => QTextCodec::codecForLocale()->name(); ist "ISO 8859-1"
Jetzt meine Fragen:
Muss ich meinen QString nach den Sonderzeichen durchsuchen und wenn eines vorhanden ist das Zeichen aus dem QString entfernen und durch z.B. \276 ersezten?
Die Anwendung die die Texte sendet nutzt unicode und sendet das auch so rüber und im QString(ist ja auch unicode) steht es ja auch richtig drin und die Schriftartkann die Zeichen ja auch sonst würde es ja bei direkter Zuweisung auch nicht gehen.
Danke schon mal für eure Hilfe
Gruß
Salvator
habe folgendes Problem was ich noch nicht ganz verstanden habe.
Meine QT-Anwendung läuft in mehreren Ländern und jedes Land hat seine eigenen Sonderzeichen, meine Anwendung bekommt die Texte per TCP/IP gesendet.
Jetzt habe ich mal alle Sonderzeichen die bei mir im moment so vorkommen in den Texten in einen zusammen geschrieben.
"à°ç§éùè¨ÄÖÜüäößòè¡ñçáéšěčířž"
Wenn ich diese Zeichen direkt im QT-Creator / Designer der Text-Eigenschaft von QLabel zuweise werden alle Zeichen angezeigt kommt der Text über die Schnittstelle wird der Text in ein QLabel gespeichert wird dies über qDebug() ausgegeben sind alle Zeichen vorhanden und werden auch richtig in der Konsole angezeigt.
Weise ich jetzt aber über myLabel.setText(myQString) den Text meinem Label zu fehlen Zeichen ich habe auch schon folgendes versucht
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
aber dann werden es nur weniger Zeichen und in der qDebug-Ausgabe stehen viele ??????
Schaue ich in meine ui_....h wo mein Qlabel definiert ist sieht das so aus
myLabel->setText(QApplication::translate("Display_z03", "\303\240\302\260\303\247\302\247\303\251\303\271\303\250\302\250\303\204\303\226\303\234\303\274\303\244\303\266\303\237\303\262\303\250\302\241\303\261\303\247\303\241\303\251\305\241\304\233\304\215\303\255\305\231\305\276", 0, QApplication::UnicodeUTF-8);
der local Codec => QTextCodec::codecForLocale()->name(); ist "ISO 8859-1"
Jetzt meine Fragen:
Muss ich meinen QString nach den Sonderzeichen durchsuchen und wenn eines vorhanden ist das Zeichen aus dem QString entfernen und durch z.B. \276 ersezten?
Die Anwendung die die Texte sendet nutzt unicode und sendet das auch so rüber und im QString(ist ja auch unicode) steht es ja auch richtig drin und die Schriftartkann die Zeichen ja auch sonst würde es ja bei direkter Zuweisung auch nicht gehen.
Danke schon mal für eure Hilfe
Gruß
Salvator