none
Aus der MSDN-Hotline: Deutsche Umlaute in der Console anzeigen (Standard C++) RRS feed

  • Allgemeine Diskussion

  •  
    Hallo zusammen,
    heute wurde uns bei der MSDN Hotline unter anderem folgende Frage gestellt:

    Ich schreibe ein C++-Programm für die Konsole. Die Umlaute werden aber nicht korrekt dargestellt. Wie stelle ich die Konsole so ein, dass sie Umlaute korrekt anzeigt?

    Unsere Antwort bzw. unser Lösungsvorschlag darauf war:

    Es gibt dafür mehrere Varianten, die alle mit verhältnismäßig viel Aufwand verbunden sind. Die einfachste Variante, die wir finden konnten, funktioniert so: 1. Erzeugen Sie eine deutsche Locale-Instanz; 2. Initialisieren Sie die globale Locale mit der deutschen Locale. Im Code sieht das dann so aus:

    #include <iostream>
    
    int main(int argc, char* argv[])
    {
    	std::locale::global(std::locale("German_germany"));
    	std::cout << "Hallo, schöne Welt!" << std::endl;
    }

     

    In Zukunft soll sich die Console auch über die Methode "imbue()" auf eine andere Locale einstellen lassen. Bis dato funktioniert das leider noch nicht.
    (Danke Markus)

    Wir hoffen, vielen Besuchern der MSDN Foren durch das Posten dieses Problems und einer möglichen Lösung weiterhelfen zu können.

    Viele Grüße,
    Jonathan Best
    MSDN Hotline für MSDN Online Deutschland

    Disclaimer:
    Bitte haben Sie Verständnis dafür, dass wir hier auf Rückfragen gar nicht oder nur sehr zeitverzögert antworten können.
    Bitte nutzen Sie für Rückfragen oder neue Fragen den telefonischen Weg über die MSDN Hotline: http://www.msdn-online.de/Hotline
    MSDN Hotline: Schnelle & kompetente Hilfe für Entwickler: kostenfrei!

    Es gelten für die MSDN Hotline und dieses Posting diese Nutzungsbedingungen, Hinweise zu Markenzeichen Informationen zur Datensicherheit sowie die gesonderten Nutzungsbedingungen für die MSDN Hotline.

    Mittwoch, 8. Dezember 2010 15:56

Alle Antworten

  • Das ist leider veraltet. Ich bekomme kein Ö auf die Konsole.
    Freitag, 10. Mai 2019 10:14
  • Das ist leider veraltet. Ich bekomme kein Ö auf die Konsole.

    Der Beitrag ist ja nunmal auch schon fast 9 Jahre alt. Im IT Zeitalter also etwa der Zeit der Dampfmaschinen zuzurechnen :)

    Für deine Frage (auch wenn sie nicht explizit da steht), schau mal hier:

      Konsole und deutsche Umlaute


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport

    Freitag, 10. Mai 2019 10:34
  • Das ist nicht veraltet und funktioniert immer noch, adr78.

    Ergänzen könnte man eventuell die UNICODE Variante

    std::wcout << "Hallo, schöne Welt!" << std::endl;

    - Gruß Florian

    Freitag, 10. Mai 2019 10:38
  • VS 2019 frisch installiert - neues Projekt - C++ Konsole

    Code von oben; Resultat bei mir:

    Was mache ich falsch?

    In VS 2017 hatte ich das Problem auch; VS 2015 ging, wenn ich mich recht erinnere.


    • Bearbeitet adr78 Freitag, 7. Juni 2019 09:40
    Freitag, 7. Juni 2019 09:37
  • Das sieht aus, als wäre die Quelldatei in UTF-8 kodiert, in dem Fall müsstest du den UTF-8-Zeichensatz ergänzen:
    std::locale::global(std::locale("German_germany.UTF-8"));

    Freitag, 12. Juli 2019 17:38
  • So erkennt man Ursachen für Umlauten-Kodierungen:

    Ein Beispiel für das Wort Höhe:

    UTF-8-Text in ISO-8859-1/9/13-16-Umgebung
    Höhe → Höhe (à und ein weiteres Zeichen je Umlaut)
    ISO-8859-1-Text in UTF-8-Umgebung
    Höhe → Hhe bzw. Fehlermeldung mit Abbruch. (Gleiche � für alle Umlaute)

    Mehr auf https://de.wikipedia.org/wiki/UTF-8

    Sonntag, 16. April 2023 12:15