Umlautproblem bei den wx Controls lösen (Linux)
Problem 1:
Sie programmieren eine wxWidgets Anwendung und stellen fest (Zumindest in Linux), das kein Text mehr dargestellt
wird sobald Sie Umlaute in z.B. ein statisches Textcontrol Element als Label, einfügen wollen.
Dieses Problem ist wie folgt zu beseitigen.
Problem 2:
Sie stellen Fest das es Darstellungsprobleme mit Umlauten gibt sobald sich Sonderzeichen im Quelltext befinden.
Lösung zu Problem 1 (Linux):
Fügen Sie in die Funktion
bool <Programmname>App::OnInit()
der Datei
"<Programmname>App.cpp"
folgende Zeilen hinzu:
wxLocale* locale = new wxLocale();
locale->Init(wxLANGUAGE_GERMAN, wxLOCALE_LOAD_DEFAULT);
Beispiel:
Hier ein Ausschnitt aus einem Quelltext:
bool Adv_TextCtrlApp::OnInit()
{
wxLocale* locale = new wxLocale();
locale->Init(wxLANGUAGE_GERMAN, wxLOCALE_LOAD_DEFAULT);
//(*AppInitialize
bool wxsOK = true;
wxInitAllImageHandlers();
if ( wxsOK )
{
Adv_TextCtrlDialog Dlg(0);
SetTopWindow(&Dlg);
Dlg.ShowModal();
wxsOK = false;
}
//*)
return wxsOK;
}
Lösung zu Problem 2 (Windows)
Sie müssen ein Compilerparameter hinzufügen damit der Compiler die Strings im Quelltext als
iso-8859-1 Zeichensatz behandelt.
in der Codeblocks IDE wird der Quelltext sobald Grafische Sonderzeichen erkannt werden in den UTF8 Zeichensatz
umgewandelt.Das erzeugt, zumindest bei mir, eine Fehlerhafte Ausgabe des Textes.
Um das Problem zu beseitigen ist folgender Compilerparameter hinzuzufügen.
-fexec-charset=iso-8859-1
In Codeblocks geht man zum Menüpunkt
Settings -> Compiler -> Tab "Compiler Settings"
Dort klickt man mit der rechten Maustaste auf einen der Einträge.
Es öffnet sich ein Untermenü in dem der Menüpunkt "New Flag" angeklickt wird.
Es öffnet sich ein Fenster in dem folgende Werte eingetragen werden.
Name => Irgend ein e Bezeichnung für das Flag z.B. "Set iso-8859-1 Charset"
Compiler flags => -fexec-charset=iso-8859-1
Ob das Problem unter Linux auch so behoben werden kann habe ich noch nicht getestet.