Umlaute mit C++ unter Linux



  • Hallo,

    ich bin ein ziemlicher Neuling was C++ anbelangt und ich hab da mal ne Frage.
    Wie bekomm ich Umlaute unter Linux hin? Unter Windows klappt das mit z.B. mit der Hex-Fluchtsequenz \x84 für ein ä usw....., das klappt aber bei mir unter Linux nicht (ich schreibe den Code in Vi und compiliere dann in der Konsole mit g++)

    Wer kann mir helfen, was muss ich beachten???

    Bin für jede Hilfe dankbar.

    Björn-H3lge ~ smaragdestes



  • Speicher die einfach ganz normal im Text ab und achte darauf, dass das Encoding des Textes sich mit dem Encoding des Terminals deckt.



  • Heutzutage hast Du in der Konsole in der Regel UTF-8. Da musst Du einfach die entsprechenden UTF-8-codes senden. Ein ä bekommst Du z. B. mit "\xc3\xa4" hin. Die UTF-8-Codes schaust Du entweder in irgendeiner Tabelle nach oder mit "echo ä|xxd".



  • tntnet schrieb:

    Heutzutage hast Du in der Konsole in der Regel UTF-8. Da musst Du einfach die entsprechenden UTF-8-codes senden. Ein ä bekommst Du z. B. mit "\xc3\xa4" hin. Die UTF-8-Codes schaust Du entweder in irgendeiner Tabelle nach oder mit "echo ä|xxd".

    Ne, bitte nicht so was in den Quellcode packen. Einfach die Umlaute normal schreiben und die Datei UTF-8 kodiert abspeichern.



  • rüdiger schrieb:

    tntnet schrieb:

    Heutzutage hast Du in der Konsole in der Regel UTF-8. Da musst Du einfach die entsprechenden UTF-8-codes senden. Ein ä bekommst Du z. B. mit "\xc3\xa4" hin. Die UTF-8-Codes schaust Du entweder in irgendeiner Tabelle nach oder mit "echo ä|xxd".

    Ne, bitte nicht so was in den Quellcode packen. Einfach die Umlaute normal schreiben und die Datei UTF-8 kodiert abspeichern.

    Da bin ich anderer Ansicht. Quellcode sollte ASCII-Kodiert sein. Umlaute und so etwas sollten vermieden werden. Wenn ich auf einer Plattform, welches mit IS0-8859-1-Kodierung mein Programm eintippe und auf einer anderen mit UTF-8-Kodierung anschaue oder ausführe, dann bekomme ich mit Umlauten im Quellcode Probleme. Das sind so Probleme, die ich nicht haben möchte.

    Bei größeren Programmen sollten Umlaute sowieso nicht im Quellcode notwendig sein. Umlaute benötigt man für Meldungen an den Anwender und die sollten entweder Englisch oder internationalisiert sein. Im Englischen gibt es keine Umlaute und bei einer internationalisierten Anwendung sind die Konstanten nicht im Quellcode selbst zu finden.



  • Hallo,

    danke für die vielen Antworten.

    Da muss ich mich jetzt erstmal mit UTF-8 und iso-8859-1 auseinandersetzen.
    Also wie finde ich herraus was bei meiner Linux Installation angewendet wird (ich nutze momentan Ubuntu....)? Als ich mein LFS augesetzt habe, war die Kodierung iso-8859-1, das weiß ich, weil ich selber die Einstellungen vorgenommen habe......jetzt meine dumme frage, wie ist Windows kodiert??

    Im Informatik Unterricht nutzen wir Windows und wir müssen in den Programmen den Hexcode für die jeweiligen Umlaute in den Quellcode einbauen ( z.B. \x94 und so....)

    Ich denke es ist wirklich sinniger, um eine Platformunabhängigkeit zu erreichen im Quelltext anstatt ä dann ae zu schreiben.....

    tüdelü

    Björn-H3lge ~ smaragdestes



  • Ubuntu verwendet UTF-8 für die klassischen Terminals.

    Richtig Sinnig ist es IMO nur "echt" Englische Namen z.B. für Fehler beim laden der Sprachdatei, ... direkt in's Programm zu schreiben und alles andere als entsprechenden Files zu lesen. Wenn das File für die deutsche Lokalisierung dann UTF-8 mit BOM ist gibt's schon fast keine Probleme mehr.



  • Am besten ist es natürlich, wenn man GNU/gettext einsetzt. Dann bekommt jede Umgebung das was sie will.


Anmelden zum Antworten