Guten Abend! Ich war gerade dabei mein Projekt zu übersetzen und führte ganz normal wieder make aus und ich hatte einen kleinen Syntaxfehler im Code, nagut dachte ich, den Fehler schnell ausbessern...und da fiel mir bei der Fehlerausgabe auf, dass keine Umlaute erkannt werden. Compiler gab folgendes aus: Fehler: no match f"ur usw., sollte wohl "für" heißen. Ich muss dazu sagen, ich verwende cygwin + rxvt und innerhalb der Konsole werden Umlaute ganz normal angezeigt bzw. auch wenn ich einen Text mit printf oder cout (natürlich mit Umlauten) ausgebe, werden diese richtig dargestellt. Woran kann das liegen?? Habe im Netz auf die schnelle nichts gefunden... MfG
Ich nehme an, du hast Windows NT/2000/XP/..., und du redest von der MSDOS-Eingabeaufforderung. Dann hat man das Problem, daß Windows selbst Unicode verwendet, in der Eingabeaufforderung aber ein anderer Zeichensatz verwendet wird (8-Bit, bei DE-Einstellung glaube ich Latin9 bzw. ISO-8859--15). In der Eingabeaufforderung kann man theoretisch daran etwas ändern mit autoexec.bat (oder hieß die da autoexec.nt?) bzw. config.sys (config.nt?). Das betrifft aber dann alle Programme; d.h. ggf. funktionieren dann andere nicht mehr. Ich hatte vor ein paar Jahren mal damit gespielt, und es dann als minder wichtig wieder bleiben lassen. Jedenfalls liegt es an den unterschiedlichen Zeichensätzen, und die Lösung wäre, die Kodierung der Konsole zu ändern.
Klaus Wachtler schrieb: > Dann hat man das Problem, daß Windows selbst Unicode verwendet, in der > Eingabeaufforderung aber ein anderer Zeichensatz verwendet wird (8-Bit, > bei DE-Einstellung glaube ich Latin9 bzw. ISO-8859--15). Standardmäßig wird im Konsolenfenster ein Pixelfont verwendet, der nicht den ANSI-Zeichensatz (CP1252, ähnlich Latin1) darstellen kann, sondern nur CP437/850. Konsolenausgaben vom OS erfolgen auch in dieser Zeichencodierung. Die Zeichencodierung kann mit mode con cp select=1252 auf ANSI (ähnlich Latin1) umgestellt werden. Das allein aber bringt nicht viel, da der verwendete Pixelfont nicht "passt". Wird anstelle des Pixelfonts eine TrueType-Schriftart eingestellt (üblicherweise wird "Lucida Console" angeboten, mit einem Trick lässt sich auch "Consolas" nutzen), dann wird das gewünschte Verhalten erzielt. Einfacher Test: Mit einem Windows-Editor (Notepad) wird eine Textdatei erzeugt, die Umlaute enthält. Diese werden automatisch in ANSI/CP1252-Codierung gespeichert (wenn man Notepad nicht explizit instruiert, Unicode zu verwenden). Gibt man diese Datei im Konsolenfenster aus, dann erhält man je nach eingestellter Codierung folgendes:
1 | c:\temp>mode con cp |
2 | |
3 | Status von Gerät CON: |
4 | --------------------- |
5 | Codepage: 850 |
6 | |
7 | |
8 | c:\temp>type text.txt |
9 | õ÷³─Í▄▀Á |
10 | |
11 | c:\temp>mode con cp select=1252 |
12 | |
13 | Status von Gerät CON: |
14 | --------------------- |
15 | Zeilen: 3000 |
16 | Spalten: 80 |
17 | Wiederholrate: 31 |
18 | Verzögerungszeit:1 |
19 | Codepage: 1252 |
20 | |
21 | |
22 | c:\temp>type text.txt |
23 | äöüÄÖÜßµ |
24 | |
25 | c:\temp>mode con cp select=1251 |
26 | |
27 | Status von Gerät CON: |
28 | --------------------- |
29 | Zeilen: 3000 |
30 | Spalten: 80 |
31 | Wiederholrate: 31 |
32 | Verzögerungszeit:1 |
33 | Codepage: 1251 |
34 | |
35 | |
36 | c:\temp>type text.txt |
37 | дцьДЦЬЯµ |
Klaus Wachtler schrieb: > Jedenfalls liegt es an den unterschiedlichen Zeichensätzen, und > die Lösung wäre, die Kodierung der Konsole zu ändern. Zusammengefasst: Pixelfont systemweit für Konsolfenster deaktivieren, für Compilerdurchläufe die Codepage verwenden, in der Quelltexte verfasst sind - das ist CP1252.
Klaus Wachtler schrieb: > Ich nehme an, du hast Windows NT/2000/XP/..., und du redest von der > MSDOS-Eingabeaufforderung. Ich würde sagen Nein, denn er schreibt ja, dass er cygwin und rxvt nutzt, also nutzt er wohl auch die cygwin-Shell bzw. rxvt welches er mit cygwin installiert hat. @ Albert Keinen Kopf machen, noch 10 Jahre (oder länger) und das Unicode-Latin-Zeichensatz-Problem ist gelöst, aber dann wird es andere Probleme geben. Mal eine Anmerkung/Frage, der Compiler gibt wirklich so einen DEnglisch-Mist aus?
1 | Fehler: no match für |
2 | ^deutsch ^englsich ^wieder deutsch |
@eklige Tunke Ja, der Compiler gibt es genau so aus. Ich habe das "Problem" einfach behoben, indem ich in der cygwin.bat set LANG=en_US.ISO8859-1 eingetragen habe. Jetzt ist alles in Englisch, so wie ich es haben will. Schönen Abend
Nachtrag, natürlich meinte ich: set LANG=en_US.ISO-8859-1 Schönen Abend
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.