Umlaute mit C-Programm ausgeben
-
Wenn ich (ältere) C-Quelltexte auf einem SuSE-Linux 9.3 kompiliere und starte, führt dort die Zeile
printf("Drücken Sie eine Taste!\n");
zu der Ausgabe
Drcken Sie eine Taste!
Die Umlaute sind entweder weg oder durch andere Zeichen ersetzt.
Das Problem tritt sowohl im KDE-Terminalfenster als auch im XTerm auf.
Tippt man in dem Terminalfenster Umlaute direkt ein, werden diese auch korrekt dargestellt - am Zeichensatz liegt's also offenbar nicht.Auf meinen älteren Linux-Systemen (z. B. Mandrake 8.2) erscheinen die Ausgaben vollständig (also inkl. den Umlauten und anderen Sonderzeichen).
Hat jemand eine Idee, was beim Kompilieren der Quelltexte anders gemacht werden muss, um auch Umlaute ausgeben zu können? Muss etwas alles auf Unicode umgestellt werden???
Martin
-
Finde heraus, worauf xterm eingestellt ist (utf-8 oder latin1) und codiere das C-File entsprechend. Dann geht's. Wenn's jetzt auf der Konsole geht (die kein utf-8 kann), liegt die Vermutung nahe, dass das C-File in latin1 codiert ist und xterm/konsole auf utf-8 eingestellt sind.
-
@ Ringding:
Deine Erklärung klingt für mich nicht plausibel (ich werd's aber mal prüfen), denn wenn ich den C-Quelltext in dem gleichen Fenster ausgebe (z. B. mit "cat"), stehen dort die Texte richtig. Wenn deine Erklärung stimmt, müsste der C-Compiler demnach gezielt ASCII-Codes in Zeichenketten durch andere ersetzen. Das würde mich jedoch sehr wundern - und macht auch keinen Sinn, denn normalerweise möchte man das Programm ja auch in der gleichen Umgebung (Fenster) laufen lassen können, in der man es eingegeben hat.Martin
-
Nein, umgesetzt wird normalerweise nichts. Du hast recht, wenn mit cat die Umlaute erscheinen, sollten sie das zur Laufzeit eigentlich auch tun. Oder hast du vielleicht irgendwo setlocale() verwendet?
-
Ich hab's ausprobiert, wie du gesagt hast, und es funktioniert tatsächlich!
Wenn ich das KDE-Terminalfenster mit dem Menüpunkt "Codierung" auf ISOxxxx-1 (Westeuropäisch) stelle, erscheinen die Umlaute richtig. Im Editor (vi) oder bei Ausgabe des Quelltextes mit 'cat' sind sie aber immer richtigt!
Keine Ahnung, was da genau passiert...Martin
-
Ringding schrieb:
Finde heraus, worauf xterm eingestellt ist (utf-8 oder latin1) und codiere das C-File entsprechend. Dann geht's. Wenn's jetzt auf der Konsole geht (die kein utf-8 kann), liegt die Vermutung nahe, dass das C-File in latin1 codiert ist und xterm/konsole auf utf-8 eingestellt sind.
...
Ich hab schon lange nix mehr an meiner Konfiguration geändert. Für den Zeichensatz hab ich mich bis dahin auch nicht weiter interessiert. Ich habe biss dahin auf die Deutschen Sonderzeichen verzichtet. Jetzt würde ich doch gern alles auf den dutschen zeichensatz ändern. Wo muss ich eine Eintragung vornehmen, wenn ich xterm nutze? Gibts eine Möglichkeit den zeichensatz "global" einzustellen?Für Eure Antwort wäre ich da sehr dankbar
mfg
-
Du musst deine Terminalemulation im Unicode Modus starten und die LANG und LC_-Umgebungsvariablen auf die UTF-8 locale umsetzen.