Unicode/ASCII in C mit printf() in der Konsole darstellen.

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Ich nehme an, du nutzt Windows. Da gibt es leider kein Unicode in der Konsole. Stattdessen wird eine Codepage verwendet (im deutschen Raum üblicherweise CP850).

\u2251 wäre da z.B. \xBA

Für mehr Details Google nach deiner Codepage durchsuchen (die aktive Codepage lässt sich übrigens im cmd mit 'chcp' auslesen).

Problem hier ist: Es funktioniert dann nur auf PCs mit der gleichen Codepage sicher. Es gibt in der Win-API eine Funktion um die Codepage (fix gegooglet, die sieht vielversprechend aus: https://msdn.microsoft.com/en-us/library/windows/desktop/ms686036%28v=vs.85%29.aspx) zu ändern, falls du auf anderen Rechnern sicher sein willst.

Wenn du sicher gehen willst: Die ersten 127 Zeichen vom ASCII Code sind immer garantiert.

InformatikFaget 
Fragesteller
 20.05.2015, 19:11

Vielen Dank für deine Antwort!

Ist es möglich in C mithilfe einer Funktion Befehle in der Konsole auszuführen? Also, dass im Grunde mein C-Programm als erstes den Befehl "chcp 850" im CMD ausführt, sodass die Codepage auf 850 geändert wird? Oder mit "chcp" überprüft, welche Codepage aktiv ist und sie nur bei Bedarf ändert?

MfG.

0
reddox86  20.05.2015, 19:46
@InformatikFaget

Mit der Funktion 'int system(const char *cmd)' (aus <stdlib.h>) kannst du einen Shell Command absetzen. Das ist sicher nicht die schönste Lösung, aber ehrlich gesagt die einzige die mir spontan einfällt.

Dann könntest du z.B.

system("chcp 850");

ausführen um die Codepage zu ändern.

2

Angezeigt wird (Konsole):

AE: Ä
OE: Ö
UE: Ü
SS: ß
Doppelte horizontale Linie: É
Doppelte vertikale Linie: æ