Wie kann ich Sonderzeichen oder griechische Buchstaben in C++ ausgeben??
Probier mal: for( int i = 0; i < 255; ++i ) std::cout << (char)i << " "; std::cout << std::endl; Also einfach einen entsprechenden Code umcasten auf char. Obiges gibt die komplette Code-Tabelle aus. Musst du halt suchen, welcher Code deinem gewünschten Zeichen entspricht.
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 1251. *) geht nur nach Registry-Manipulation:
1 | Windows Registry Editor Version 5.00 |
2 | |
3 | [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont] |
4 | "0"="Lucida Console" |
5 | "00"="Andale Mono" |
6 | "000"="Consolas" |
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 (Ich hatte mich in meinem vorherigen Posting vertan, ANSI ist 1252, nicht 1251) 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 von mir 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.
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.