Codierung Umlaute

Alles rund um die Programmierung mit Qt
Antworten
Tomaxx
Beiträge: 71
Registriert: 7. Juni 2017 09:05

Codierung Umlaute

Beitrag von Tomaxx »

Hallo Leute

In meinem Code steht:

Code: Alles auswählen

tr("Programmname® Vollversion.\n Volle Funktionalität").toStdString()
Auf dem Bildschirm erscheint:

Code: Alles auswählen

Programmname� Vollversion.
 Volle Funktionalit�t
Was mache ich falsch?

Danke
Thomas
tamasi
Beiträge: 45
Registriert: 5. Juli 2007 15:49

Re: Codierung Umlaute

Beitrag von tamasi »

toSdtString liefter einen std::string. Der ist 8bit (char).
Du brauchst die Funktion toStdWString. Da kommt ein wchar_t raus. Der beherrscht Unicode.
Tomaxx
Beiträge: 71
Registriert: 7. Juni 2017 09:05

Re: Codierung Umlaute

Beitrag von Tomaxx »

Gibt es ein tr() mit dem ich die Ausgabe von toStdWString() verarbeiten kann?
Oder kann ich die Ausgabe weiter umwandeln in einen StdString?
tamasi
Beiträge: 45
Registriert: 5. Juli 2007 15:49

Re: Codierung Umlaute

Beitrag von tamasi »

Das tr() wird vor dem toStdWString() aufgerufen.

tr erzeugt einen temporären QString den du anschließend gleich per toStdWString() umwandelst und dann irgendwo speichern/anzeigen kannst.
Tomaxx
Beiträge: 71
Registriert: 7. Juni 2017 09:05

Re: Codierung Umlaute

Beitrag von Tomaxx »

Ich benutze eine Funktion

Code: Alles auswählen

void meldung(string meldungstext = " ", bool mspace = false)
die verlangt einen string. Kann ich den StdWString danach wieder zum StdString wandeln? Oder muss ich eine zweite funktion für den Typ schreiben?
Wie ist dann der typ, den ich in der Funktion initialisieren muss?
tamasi
Beiträge: 45
Registriert: 5. Juli 2007 15:49

Re: Codierung Umlaute

Beitrag von tamasi »

std::string enthält keine codec Informationen. Sollen dort solche Umlaute verwendet werden müsste die Funktion void meldung(...) das selbst wissen und erledigen. Ist es eine fremde Funktion wird das natürlich schwierig.
Im schlimmsten Fall müsste noch eine Hilfsfunktion her, die den Text dann zumindest teilweise ersetzt z. B. ä zu ae usw und diesen ersetzen Text dann der Funktion meldung(...) übergibt.
Tomaxx
Beiträge: 71
Registriert: 7. Juni 2017 09:05

Re: Codierung Umlaute

Beitrag von Tomaxx »

Hat sich in Qt irgendwas geändert? Das phänomen tritt erst seit ca. 2 Monaten auf.

Oder muss ich den editor auf einen anderen code umstellen?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Codierung Umlaute

Beitrag von Christian81 »

Der Code sollte immer utf-8 sein, der Compiler (alle außer msvc) interpretieren die Code nämlich als solches. Für msvc braucht man zusätzlich den switch '/utf8'.
Aber am besten nur ascii benutzen, den Rest per translator übersetzen - dann hat man keine Probleme mit irgendwelchen Kodierungen.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Tomaxx
Beiträge: 71
Registriert: 7. Juni 2017 09:05

Re: Codierung Umlaute

Beitrag von Tomaxx »

Wie kommt es, dass das Phänomen nur auf einem PC auftritt, auf meinem zu Hause nicht?
Tomaxx
Beiträge: 71
Registriert: 7. Juni 2017 09:05

Re: Codierung Umlaute

Beitrag von Tomaxx »

Witzig ist, dass die falschen Umlaute nur beim Start unter QT angezeigt werden.
Installiere ich mein Programm auf dem Selben Computer, ist alles OK.

Thomas
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Codierung Umlaute

Beitrag von Christian81 »

Wie kommt es, dass das Phänomen nur auf einem PC auftritt, auf meinem zu Hause nicht?
Nach oben
Weil es auf die Kodierung des Programms beim Start ankommt.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten