Umlaute
-
Hallo zusammen,
ich drehe völlig an folgendem Problem durch: Ich soll ein bestehendes C++ Programm aktualisieren, an dem zuletzt vor 2 Jahren gearbeitet wurde. Das Programm benutzt wxWidgets und im Menü werden keine Umlaute angezeigt.
Ich habe zum testen ein kleines, simples wxWidgets Programm geschrieben, in dem Umlaute problemlos dargestellt werden.Wie kann es sein, dass das bei dem alten Programm nicht funktioniert?
Ich habe folgendes versucht:
- die Strings mit wxString("äöü", wxConvUTF8) konvertiert -> garnichts wird dargestellt
- _("äöü") und wxT("äöü") -> Kompilierfehler: converting to execution character set: Invalid argument
- Darstellung der Umlaute in Hex Werten: Geht nur solange als nächstes Zeichen kein theoretisch möglicher hex-buchstabe kommt, z.B. "Index \x00F6ffnen" geht nicht und wird mit einer Hyroglyphe dargestellt, "Index \x00F6 ffnen" gehtkann es vielleicht an Kompilereinstellungen liegen?
Ich benutzte g++ 4.3.2, wxWidgets 2.8.8 auf ubuntu 8.10danke!
-
In welchem Format speicherst du denn deine Source-Dateien ab?
-
hmmm, bin nicht sicher, was du meinst. es sind halt .cpp dateien. falls du etwas anderes meinst, woran könnte ich das sehen?
aber wo du das schon sagst: ich habe die dateien auf cd bekommen und musste .sh scripte mit einfachen befehlen vorher auch in der shell mit dos2unix umwandeln. könnte es damit zusammenhängen?
-
Ich wollte auf den erweiterten Zeichensatz hinaus, mit dem der Text gespeichert wird. Sowas wie ISO 8859-1 z.B.. Kannst du in deiner IDE einstellen, in welchem Zeichensatz die Dateien gespeichert werden?
Vielleicht liege ich hier mit meiner Vermutung aber auch voll daneben. Hast du die .cpp-Dateien denn auch mit dos2unix umgewandelt?
-
bist du sicher das du die unicode variante on wxWidgets benutzt?
-
also beim kompilieren sind folgende libs aufgeführt:
-I/usr/lib/wx/include/gtk2-unicode-release-2.8
-I/usr/include/wx-2.8widersprechen die sich vielleicht? sorry, bin echt noch sehr neu in der thematik.
hab mittlerweile mal versucht, mein kleines, mit umlauten funktionierendes testprogramm mit unix2dos umzuwandeln. das hat den fehler leider nicht produziert, umlaute gehen immernoch.
und danke schonmal für eure mühe....
-
es würde das problem auch erledigen, wenn auch unelegant, wenn die hex codes funktionieren würden. gibt es da vielleicht ein abschließendes zeichen? das problem ist ja leider, dass wenn ich \x00FC schreibe und danach zufällig im wort z.b. ein F kommt, dieses dann theoretisch zum hex code dazugehören könnte und deshalb eine hieroglyphe dargestellt wird.
in html gäbe es diese abschließende zeichen, z.b. in Ä das ";".
-
mael15 schrieb:
- Darstellung der Umlaute in Hex Werten: Geht nur solange als nächstes Zeichen kein theoretisch möglicher hex-buchstabe kommt, z.B. "Index \x00F6ffnen" geht nicht und wird mit einer Hyroglyphe dargestellt, "Index \x00F6 ffnen" geht
Mit Hex-Werten sollte man das auch machen! Steht auch im C++ Standard so drin.
Das sollte gehen, und hat auch nichts mit wxWidgets sondern allgemein C++ zu tun:Index \x00F6 \bffnen"
-
leider gibt
"Index \x00F6 \bffnen"
bei mir auch eine Hieroglyphe, sieht japanisch aus. das \b scheint nicht zu funktionieren. woran könnte das liegen?
funktioniert übrigens auch nicht in dem testprogramm, in dem die umlaute sonst funktionieren. ist es vielleicht doch eine wxWidgets oder g++ einstellung?
-
Hem, das \b führt normalerweise ein Backspace aus. Also nach dem Hexwert ein Space, dann mit \b ein Space zurück und dann ffnen dran.
\b ist Standard, nichts Compiler-spezifisches.
Hem, wxWidgets scheint da wohl ziemlich eigen zu sein.
-
ARGH! Man, wie kommt man eigentlich auf \xXXXX? Normalerweise muß man \uXXXX benutzen!
"Index \u00F6 \bffnen"
Habe hier auf Arbeit leider keinen C++ Compiler... kanns nicht ausprobieren.
-
Und, hat es geholfen?
-
leider nein, der backslash wird als hieroglyphe dargestellt.
ich dreh ein bischen durch, das kann nur eine völlig bescheuerte einstellung sein...
-
es funktioniert auf einmal!!!! und zwar NUR ohne hexawerte, einfach "Index löschen" ausgeschrieben. Ich hab nicht die geringste Ahnung warum....
einerseits freu ich mich ja, aber andererseits grusel ich mich schon vor dem nächsten problem, das "einfach so" auftritt, keinen sinn macht, und dann "einfach so" wieder verschwindet.
falls jemand noch etwas weiß, was notwendig sein muss, damit umlaute in einem wxWidgets menue korrekt dargestellt werden, bitte posten!!!
danke an alle helfer!
-
ok, das problem ist zurück, ohne dass ich mir einer änderung bewusst bin. dazu kommt: in dem teil des programmes, in dem neulich die umlaute plötzlich dargestellt wurden, funktioniert es immernoch.
nun kommt ein anderer programmteil dazu und dort werden keine umlaute dargestellt. wie zuvor werden komplette strings nicht dargestellt, wenn irgendwo ein umlaut enthalten ist.ich dreh völlig durch und verstehe garnichts mehr............