Konsolenprogramme mit Turbo C++

Erstellen eines Konsolenprogramms

Zeichensatz auf der Windowskonsole

Dauerhaftes Umstellen des Konsolenzeichensatzes

Das Konsolenfenster nutzt üblicherweise einen Pixelfont, der aber versteht nur 8-Bit-Zeichen. Wird das Konsolenfenster auf die Nutzung eines geeigneten TrueType-Fonts umgestellt (Lucida Console, Andale Mono*, Consolas *), dann können auch 16-Bit-Unicode-Zeichen ausgegeben werden; je nach verwendetem Font ist die Unterstützung mehr oder weniger ausführlich.

Leider hat MS keinen Weg dafür vorgesehen, per Software den Konsolenfont auszuwählen, das muss manuell erfolgen.

Der Pixelfont ist üblicherweise für Codepage 850 eingerichtet, das entspricht weitestgehend dem Textzeichensatz alter DOS-PCs. Daher werden auch ANSI-Umlaute nicht korrekt ausgegeben; das funktioniert erst nach Umstellen der Konsolencodepage auf 1252 (für ANSI-Zeichensatz).

*) geht nur nach Registry-Manipulation:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont]
"0"="Lucida Console"
"00"="Andale Mono"
"000"="Consolas"

Temporäres Umstellen des Konsolenzeichensatzes

Kann man die Codepage in der Konsole umstellen ?
Also nicht global im gesamten Windows, sondern nur lokal während der Laufzeit des Programmes ?

Ja. Für eine laufende Konsolensitzung geht das mit

mode con cp select=1252

In einer Konsolenanwendung selbst geht das mit den Win32-API-Funktionen

  SetConsoleOutputCP(1252);
  SetConsoleCP(1252);

Um die alte zu restaurieren, kann diese vorher mit

  GetConsoleOutputCP();
  GetConsoleCP();

bestimmt werden.

Jedoch funktioniert das Umstellen der Codepage nur mit dem von in der Konsole standardmäßig verwendeten Schriftart - ist die Pixelschrift aktiv, hilft das Umstellen der Codepage gar nichts, wenn Unicode-Zeichen ausgegeben werden sollen, die nicht in der Pixelschrift enthalten sind. Und die Pixelschrift enthält halt nur die zu Codepage 850 gehörenden Zeichen.

Umlaute werden dann korrekt umgesetzt, aber griechische, kyrillische oder auch mathematische Zeichen funktionieren nicht. Nicht nur deswegen ist es äußerst ratsam, in der Konsole eine TrueType-Schriftart wie Andale Mono o.ä. zu verwenden. Übrigens funktionieren andere als die oben erwähnten Schriftarten nicht in Konsolfenstern, selbst wenn diese nichtproportional sind; die Courier New beispielsweise kann zwar wie oben angegeben in der Registry eingetragen werden, Windows akzeptiert sie aber trotzdem nicht.