Seite 1 von 1

Wie Umlaute in Qt benutzen?

Verfasst: 22. Januar 2014 14:16
von heiko.j.meier
Hallo zusammen,

ich möchte in Qt ein kleines Projekt erstellen bei dem ich mit Texten arbeite die auch Umlaute verwenden.
Dabei ist mir aufgefallen dass wenn ich ein Konsolen-Programm erstelle die Umlaute nicht oder falsch dargestellt werden.
Bei einem Qt-Widget-Programm werden mit dem selben Code die Umlaute richtig dargestellt.

Dies scheint mir eine Einstellung im Projekt zu sein. Hat jemand dazu schon Erfahrungen gemacht?
Was muss ich wo einstellen damit ich dies beheben kann?

Ich benutze Windows 7 und das Qt 5.2.0 Framework mit dem Qt Creator 3.0.0

Dies ist mein Testbeispiel.

Code: Alles auswählen

int main(int argc, char *argv[]){
    QCoreApplication a(argc, argv);

    //QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));

    QString s = "ü";
    qDebug() << s;
    return a.exec();
}
Vielen dank für eure Hilfe
Heiko

Re: Wie Umlaute in Qt benutzen?

Verfasst: 23. Januar 2014 19:14
von Christian81
Nicht-ASCII - Zeichen im Quellcode sind zu vermeiden. Vor allem wenn man den Code unter Windows und Linux kompiliert. Übersetzungen sollten dann mittels QTranslator gemacht werden und gut ist.

Re: Wie Umlaute in Qt benutzen?

Verfasst: 26. Januar 2014 11:55
von sigvdr
Als Notlösung geht auch z.B. QString text = QString::fromUtf8("ÄÖÜöäü");
Das funktioniert so aber auch nur wenn der TextEditor (oder IDE) auch auf UTF-8 eingestellt ist.

Aber wie Christian schon gesagt hat macht das Probleme, du solltest das unter keinen Umständen für richtige Projekte verwenden.

Gruß Sig

Re: Wie Umlaute in Qt benutzen?

Verfasst: 27. Januar 2014 11:27
von RHBaum
Und wenn du den Translator meiden möchtest .... warum auch immer,
QStrings sind intern Utf16
Für Utf16 gibts auch coding tabellen und dann kannst die Strings auch in ascii conformer codierung schreiben ...
QChar Umlaut('\u00fc'); z.b. ^^

Ciao ...

Re: Wie Umlaute in Qt benutzen?

Verfasst: 19. März 2014 13:07
von Picaschaf
Welche halbwegs vernünftige IDE die nach 1900 entwickelt wurde verwendet denn bitte kein UTF-8? MSVC, Qt Creator, vim, ... alle verwenden UTF-8 per default. Auch die Compiler kommen damit problemlos klar. Also einfach aktuelle Toolchain benutzen, tr("Hallo Welt") ... und alles funktioniert so wie es soll. Das einzige wo es Probleme gibt (dank der modernen Windows "Commandline") ist bei Custom Compilers in UTF-8 codierten *.pro Dateien, da die Windows Commandline ASCII erwartet.

Re: Wie Umlaute in Qt benutzen?

Verfasst: 19. März 2014 18:24
von Christian81
Die Windows-Commandline erwartet kein ASCII sondern den lokalen Zeichensatz - in deinem Fall IBM-850.
Und utner Windows gibt es immer Probleme mit UTF-8 kodierten Strings wenn sie im Exeutable sitzen - je nachdem wo das Executable ausgeführt wird.