Forum: PC-Programmierung C++ Sonderzeichen Win SetConsoleCP(1252) funktioniert nicht


von mutlipilz5 (Gast)


Lesenswert?

Ich habe ein kleines Sprachlernprogramm erstellt ...  naja fast. Im 
Spanischen wie im Deutschen (für diese Sprachen ist es gedacht) gibt es 
einige Sonderzeichen die auch benötigt werden um die Sprache richtig zu 
lernen, die die Konsole aber nicht ausgeben möchte.

Dazu hab ich schon das hier gefunden: 
Beitrag "Sonderzeichen in C++"

Der Befehl SetConsoleCP(1252/*oder CP_WINANSI*/) und 
SetConsoleOutputCP([...]). Nun ... diese wollen bei mir nicht 
funktionieren obwohl ich Consolas in der Konsole verwende.

Was ist da los?

MfG, multipilz5 :)

von Thomas K. (muetze1)


Lesenswert?

Hi

ich nutze dafür AnsiToOEM() um den String vorher in den 
Zeichensatz/CodePage der Console umzuwandeln. Danach den String ausgeben 
und auch die deutschen Umlaute und ß stimmen.

Grüße,
Muetze1

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

mutlipilz5 schrieb:
> Nun ... diese wollen bei mir nicht funktionieren

Was bedeutet das genau?

Was wird anstatt der erwarteten Zeichen ausgegeben? Wie gibst Du die 
Zeichen aus, wie sind sie in Deinem Programm(quelltext) codiert?

von T.roll (Gast)


Lesenswert?

mutlipilz5 schrieb:
> 1252/*oder CP_WINANSI

Vergiss diesen Codepage-Müll und lern es gleich richtig mit UTF-8. Dann 
hast du nie mehr Probleme mit Sonderzeichen.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

T.roll schrieb:
> Vergiss diesen Codepage-Müll und lern es gleich richtig mit UTF-8.

Seit wann funktionieren unter Windows Konsolausgaben in UTF-8?

von T.roll (Gast)


Lesenswert?

Rufus Τ. F. schrieb:
> Seit wann funktionieren unter Windows Konsolausgaben in UTF-8?

Ich weiß ja, dass Windows immer schon ziemlich hintendran ist; aber 
ernsthaft??? Wir haben 2016 und dieser Müll kann immer noch kein 
Unicode? Bei Google findet man zumindest ein paar Lösungen für UTF-8.

Waren die nicht inzwischen mal bei UTF-16 angekommen?

Naja gut, bei Excel sind sie auch immer noch zu blöd für vernünftige 
Zeichensätze.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Das ist sicherlich echt total hilfreich.

Windows unterstützt Unicode bereits seit 1993.

Und seit einiger Zeit auch Utf-8 in der Konsole (was mir, weil ich das 
Problem schlichtweg nicht habe, bislang unbekannt war).

https://msdn.microsoft.com/en-us/library/tw4k6df8%28v=vs.100%29.aspx

Was hat Excel Deiner Ansicht nach für ein Zeichensatzproblem?

von bluppdidupp (Gast)


Lesenswert?

Einfach GUI-Anwendung bauen statt Kommandozeile ;D
WinAPI, .NET-Framework, WinRT/UWP und z.B. auch QT und wxWidgets 
arbeiten alle intern mit UTF16.
Im .NET-Framework ist bei Funktionen wie File.WriteAllText UTF8 das 
Standardausgabeformat.
Ärger mit Mehrsprachigkeit hat man eigentlich nur auf der Konsole, wo 
ich den Eindruck hab das MS die mehr als Legacy mit sich rumschleppt als 
da noch wirklich was rein zu investieren.

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
Noch kein Account? Hier anmelden.