Re: Kann unter Qt mit Suse 9.2 keine Umlaute ausgeben.
Peter Wabersich <[email protected]>
| Newsgroups | gmane.linux.suse.programming |
|---|---|
| Message-ID | <[email protected]> |
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
>
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
[email protected]
Um eine Liste aller verfÃŒgbaren Kommandos zu bekommen, schicken
Sie eine Mail an: [email protected]