Seite 1 von 1

Umlaute ersetzen

Verfasst: 2. Juli 2008 21:29
von alfonsospringer
Da es sonst Probleme mit der Kodierung gibt möchte ich, dass Umlaute in der eingabe des Users (QTextEdit) vor der weiteren Auswertung durch Buchstabenkombinationen (ä->ae, usw.) erstetzt werdem. Das dachte ich mir so:

QString text = eingabe->text().replace(QString("ä"), QString("ae"));

Aber irgendwie funktionierts nicht. Das ä bleibt trotzdem ein ä. Woran liegt das und wie mach ichs richtig?

Verfasst: 2. Juli 2008 22:48
von -=Freaky=-
eingabe->toPlainText()
vllt.?
in der doku zu QTextEdit kann ich zumindest gerade keine text()-methode finden.

mfg,
julian

Re: Umlaute ersetzen

Verfasst: 3. Juli 2008 06:31
von Christian81
alfonsospringer hat geschrieben:Da es sonst Probleme mit der Kodierung gibt
...
Aber irgendwie funktionierts nicht. Das ä bleibt trotzdem ein ä. Woran liegt das und wie mach ichs richtig?
Genau deshalb - woher weiß dein Compiler das ein 'ä' auch wirklich ein 'ä' ist? Nimm den Unicode-Code von 'ä' und es geht.

Verfasst: 3. Juli 2008 07:38
von PeterLustig
In C++ nutzt man grundsätzlich keine Sonderzeichen im Code. Solltest du wirklich beachten. :>

Verfasst: 3. Juli 2008 14:36
von alfonsospringer
Ist DAS der Unicode von Ä?

&#228 ;

Quelle (http://www.html-php-mysql.de/generatoren/unicode.php)

So richtig? Tuts jedenfalls nicht... text().replace(QString("&#228 ;"), QString("ae"));

Das Leerzeichen vor dem Semikolon ist Absicht, damit es nicht interpretiert wird

Verfasst: 3. Juli 2008 14:53
von Christian81
Du erszeugst einen String der "&#228 ;" als Inhalt hat und wunderst Dich dass damit nicht 'ä' ersetzt wird... :roll:

Verfasst: 3. Juli 2008 14:55
von alfonsospringer
Dann sag mir doch bitte wie ich es richtig mache? Ich kann den String doch nicht nach einer Zahlenkombination durchsuchen, oder?

Verfasst: 3. Juli 2008 16:18
von Christian81
Du willst den String nach einem 'ä' durchsuchen. Dann mach das auch!
http://doc.trolltech.com/4.3/qchar.html#QChar-6

Verfasst: 3. Juli 2008 16:36
von alfonsospringer
Danke, dass hat gereicht 8)