c++ konsole sonderzeichen?

4 Antworten

Ja, das ist ein altes und bekanntes Problem mit der ollen Windows-Konsole die immer noch mit Codepages arbeitet und kein richtiges Unicode kann. (von vernünftigem Scrollback und allen anderen Features halbwegs moderner Terminalemulatoren mal abgesehen)

Tippe mal folgendes ein:

chcp 65001

Das setzt die Codepage auf UTF-8, ist aber seit Jaaaahren total verbuggt und funktioniert oft nicht richtig.

Als Alternative könntest du auch ...

chcp 1252

... eingeben. Das setzt dir die Kommandozeile auf "Deutsch" und du kannst fortan Umlaute benutzen.

Beachte dabei aber zwei Dinge:

  • Dein C++ Quelltext muss in der Kodierung der Konsole vorliegen (z. B. ISO-8859-1 bei CP-1252)
  • Der Konsole-Font muss die entsprechenden Zeichen auch darstellen können. Besonders bei Unicode-Fonts wird es hier Probleme geben.

Alles in allem fühlt sich Windows auf dem Gebiet an wie aus der 1995-Ära. Unter so ziemlich allen *ix sind die Terminal-Emulatoren seit MINDESTENS 20 Jahren weiter entwickelt (nicht nur bezogen auf Kodierungen) und sogar in der reinen Konsole ohne X kann man Problemlos Japanisch lesen und schreiben.

Naja, aber wenn es dir ausschließlich um die Umlaute geht, ist "chcp 1252" dein Freund. Wenn du absolute Kompatibilität willst, dann bleib bei ASCII oder wähle ein GUI-Framework aus. Aber Windows + Konsole + Unicode hat sich noch nie gut vertragen.

Viel Erfolg! :)

Windows oder Linux? 

Man kann den Ländercode z.Bsp. über den Computer einstellen. In der Regel wird man das nur tun, wenn man es wirklich braucht. Eine 'schöne' Darstellung ist normalerweise nicht Ziel eines Konsolenprogramms. 

tellme84 
Fragesteller
 17.04.2017, 20:01

windows

0

Die anderen haben zwar nicht unrecht, aber ich denke für deine Ansprüche langt der Hexcode der Zeichen:

Zeichen Hex Okt
==================
'Ä' 8E 216
'ä' 84 204
'Ö' 99 231
'ö' 94 224
'Ü' 9A 232
'ü' 81 201
'ß' E1 341

Verwndung:

cout << "schh\x 94 \bner Tag Heute";

askandanswer23  21.04.2017, 04:37

Also nur die 2 zeichen nach deinem gewünschten Umlaut nehmen, die letzten drei sind die Okta Zahlen

0

welche ide verwendest du?

tellme84 
Fragesteller
 17.04.2017, 20:00

codeblocks, aber bei anderen ist es genauso

0