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.