Mailinglist Archive: opensuse-programming-de (71 mails)

< Previous Next >
Re: Kann unter Qt mit Suse 9.2 keine Umlaute ausgeben.
  • From: Peter Wabersich <malachit98@xxxxxx>
  • Date: Sat, 21 May 2005 01:48:59 +0200
  • Message-id: <428E776B.8020303@xxxxxx>
Vielen Dank für die Beiträge, ich konnte Aufgrund der Hinweise und Vorschläge mein Problem lösen. Die Lösung sieht so aus und funktioniert auch:

Code-Auszug:

QString s7;
s7.sprintf("Schöne Umlaute: ÖÄÜ, öäü");
p.drawText(20,580, QString::fromUtf8(s7) );

Ich wusste nicht, dass es entscheidend sein kann, in welcher Art und Weise der verwendete Editor kodiert. Aber in diesem Fall, ist dies entscheidend, denn in dessen Abhängigkeit muss man dann den Zeichensatz codieren unter Qt.

Ich habe als Editor unter anderem KDevelop benutzt, ohne dort irgend welche großartigen Einstellungen zu verändern. Dort findet man unter Einstellungen->Editor-Einstellungen->Öffnen/Speichern, folgende Informationen:
Öffnen und Speichern von Dateien:
Dateiformat:
Kodierung: Unicode (utf8)
Zeilenende: Unix

Ohne es zu wissen, habe ich also Unicode (utf8) verwendet, dementsprechend musste ich auch die Umwandlung:
QString::fromUtf8 ( const char * utf8, int len = -1 ) verwenden.
Returns the Unicode string decoded from the first len bytes of utf8, ignoring the rest of utf8. If len is -1 then the length of utf8 is used. If len is bigger than the length of utf8 then it will use the length of utf8.

Wenn man eine Datei unter KDevelop öffnet, hat man auch noch die Möglichkeit den Zeichensatz der entsprechenden Datei zu ändern, denn ganz oben rechts, wird der verwendete angezeigt, bei mir: utf8, mit der Möglichkeit, einen anderen einzustellen.

Da ich bei diesen Einstellungen grundsätzlich nichts verändert hatte, habe ich wie gesagt, immer utf8 verwendet, ohne diesem Zustand bisher große Aufmerksamkeit zu schenken. Von nun ab, werde ich dem verwendetem Zeichensatz immer meine Aufmerksamkeit zuteil werden lassen, insbesonders bei Programmierarbeiten.

Unabhängig davon, weil mich das Problem so genervt hat, habe ich mir mal die Sache unter Windows XP angeschaut.

QString s7=QString("ÄÖÜ, äöüß"); //Eingabe unter XP, Visuall C++ 6.0 ,geht
p.drawText(20,620,s7);

QString s33;
s33.sprintf("Hööööööööööhe (neuer Test) in mm: %d",789); //von Programmer's File Editor unter XP,geht
p.drawText(20,580,s33);

Es wurden an Visuall C++ 6.0 und an Programmer's File Editor keinerlei Änderungen durchgeführt und obige Zeilen funktionierten sofort, mit der gewünschten Ausgabe, d.h., die Umlaute werden richtig dargestellt. Der verwendete Zeichensatz war bei beiden Programmen: Western (ISO-8859-1).

Wünschen würde ich mir persönlich, das diese Problematik in den Programmierbüchern zu Qt erscheinen würde und zwar beim ersten Kapitel, beim ersten Programm. Denn bereits hier arbeitet man mit einem Editor, der einen bestimmten Zeichensatz benützt, der beachtet werden muss. Ich habe bereits mit drei verschiedenen Büchern zu Qt gearbeitet, um in die Programmierung unter Qt einzusteigen und in keinem wird diese Problematik erwähnt. Bei den englischen Büchern würde ich das ja noch verstehen, aber bei den deutschen Büchern, kann ich das nicht nachvollziehen, da wir nun mal die Umlaute in unsere Sprache haben und die entsprechende Problematik demzufolge auch behandelt werden muss.

Ich hoffe, das dieser Beitrag dazu dient, zum einen, diese Problematik bekannt zu machen und zum anderen, eine Lösungsmöglichkeit bietet, damit andere Benützer, die in die Programmiersprache Qt einsteigen wollen, besonders unter Linux, nicht von diesem Problem betroffen werden, dessen Lösung mich schon einiges an Zeit und Nerven gekostet hat 8-) .

In diesem Sinne, nochmals Danke, an alle, die zur Lösungsfindung beigetragen haben und fröhliches programmieren auch weiterhin, denn das nächste Problem kommt bestimmt.

Mit freundlichen Grüßen
Peter Wabersich



Stefan Hundhammer schrieb:
On Friday 20 May 2005 14:04, Tilman Schmidt wrote:
Das sieht so aus, als ob Du den Quelltext UTF-8 codiert gespeichert
hast

Uh - so herum kann es natürlich auch sein.

Dann nimmt man

http://doc.trolltech.com/3.3/qstring.html#fromUtf8

QString::fromUtf8( "Hällö, Wörld" );


CU


< Previous Next >