Wie Umlaute in Qt benutzen?

Verschiedenes zu Qt
Antworten
heiko.j.meier
Beiträge: 1
Registriert: 22. Januar 2014 11:35

Wie Umlaute in Qt benutzen?

Beitrag 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
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Wie Umlaute in Qt benutzen?

Beitrag 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.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
sigvdr
Beiträge: 100
Registriert: 1. Juli 2008 19:29

Re: Wie Umlaute in Qt benutzen?

Beitrag 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
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Re: Wie Umlaute in Qt benutzen?

Beitrag 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 ...
Picaschaf
Beiträge: 13
Registriert: 21. Mai 2008 12:53

Re: Wie Umlaute in Qt benutzen?

Beitrag 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.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Wie Umlaute in Qt benutzen?

Beitrag 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.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten