UTF-16-Kodierung -> Umlaute falsch dargestellt
-
Hallo,
wie bereits in der Überschrift enthalten, speichere ich meine Quelldateien in der UTF-16-Kodierung, um sie dann mit Qt 4.2.1 zu verarbeiten.
Die Umlaute in den QStrings meines Programmes werden bei der Ausführung jedoch als kryptische Zeichen ausgegeben.Kann mir da jemand weiterhelfen? QStrings arbeiten doch mit 16-bittigen-Unicode-Strings bzw. können kompatible Zeichensätze aufnehmen.
Danke
~ moagnus
-
qt arbeitet intern mit utf8 und nicht utf16.
du kannst utf16-zeichenketten aber mittels der statischen methode
QString::fromUtf16()
in einen qstring umwandeln. die doku findest in der klasse qstring.es ist aber prinzipiell einfacher utf8-kodierung zu verwenden.
-
The QString class provides a Unicode character string.
QString stores a string of 16-bit QChars, where each QChar corresponds one Unicode 4.0 character. (Unicode characters with code values above 65535 are stored using surrogate pairs, i.e., two consecutive QChars.)Was hab ich da falsch verstanden?
Auch wenn ich die Datei in UTF-8-Kodierung speichere, ändert das leider nichts.
-
ups. haben die das nur früher gemacht? hatte ich irgendwie mit utf8 so in erinnerung.
was genau willst du eigentlich machen? zeigt mal deinen code dazu.
-
Es ist wirklich nichts weiter als bloße QString-Verarbeitung:
"setWindowTitle("Generator für Firefox-Suchmaschinen");"
"methodTempl = new QLabel("Übertragungsmethode:");"
Mehr ists gar nicht.
Und das ist das Ergebnis: http://img143.imageshack.us/my.php?image=ffgenxq9.png
-
"foo" ist const char* in c++.
Versuch mal L"foo", das wäre afaik const wchar*
-
Vielen Dank!
"wchar" war genau der richtige Tipp.Der Code funktioniert nun, ist allerdings ein wenig umständlich.
wchar_t* titleStr = L"Generator für Firefox-Suchmaschinen"; setWindowTitle(QString::fromWCharArray(titleStr));
Wenn noch jemand Verbesserungsvorschläge hat, dann bitte
-
setWindowTitle(L"ÜÖÄäöü"));
Funktioniert nicht?
-
kann eigentlich nicht, da qstring keinen ctor für 16bit utf hat.
-
Ne, funktioniert leider nicht. War auch das erste, was ich ausprobiert habe.
Nuja, ist nicht weiter tragisch, wenn ich ab und zu eine Zeile Code mehr schreiben muss, da Umlaute nur dreimal im ganzen Programm vorkommen.