Unicode in Konsole



  • Guten Tag,

    ich habe ein in der Konsole ein Hindernis, das ich bisher nicht überwinden konnte. Und zwar möchte ich in der Konsole Unicode-Zeichen ausgeben können!

    Ich möchte zum Beispiel das Zeichen ♤ (Unicode 2664) ausgeben! Bisher habe ich bereits diesen Code:

    #include <iostream>
    #include <windows.h>
    #include <locale.h>
    using namespace std;
    
    int main()
    {
        SetConsoleOutputCP(65001); 
    
        locale einLocal(""); 
        locale::global(einLocal);
    
        cout << GetConsoleOutputCP() << "\n";
    
        cout << "\u2664";
    
        system("PAUSE");
        return 0;
    }
    

    Aber leider stimmt die Ausgabe nicht.

    Meine Fragen:
    1. Wie kann ich das Zeichen richtig darstellen?
    2. Wie kann ich im Programmcode die Schriftart in der Konsole wechseln?

    Gruss
    StruktEd



  • Huhu,

    vielleicht hilft dir das hier weiter:

    Zeichenketten in C++
    Oder das hier:
    Unicode/Ansi: Eure Vorgehensweisen



  • Danke erstmal für deine Antwort.

    Ich habe jetzt die beiden Texte überflogen und sie helfen mir nicht wirklich weiter. Den zweiten Link kannte ich schon und habe die Tipps in meinen Code übernommen.
    Leider zeigt mir aber nicht mal das Codebeispiel von Roger Wilco + Lucida Console die richtigen Zeichen an. Auf der Ausgabe erscheint jedes Mal nur ein '?' !

    Nebenbei: Wieso kann ich den Befehl 'wcout' in DevC++ nicht verwenden? In Visual C++ funktioniert er einwandfrei...

    Gruss
    DerSepp



  • StruktEd schrieb:

    Nebenbei: Wieso kann ich den Befehl 'wcout' in DevC++ nicht verwenden? In Visual C++ funktioniert er einwandfrei...

    Wahrscheinlich weil std::wcout relativ neu und Dev-C++ relativ alt ist.



  • Ich bin bisher noch bei der WindowsXP Version hängen geblieben. Bis zu dieser ist Unicode in der Konsole nur bedingt möglich, es lassen sich nicht alle Zeichen darstellen. Japanische Zeichen z.B. gehen nur, wenn an die lokalen Einstellungen ändert.

    Wie das bei Vista oder Windows 7 ist, keine Ahnung.

    Gruß,
    B.B.



  • Danke für eure Antworten.

    Ich benutze auch noch XP. Die lokalen Einstellungen helfen leider auch nicht, da ich einige Symbole aus 2600-26FF darstellen möchte...

    Gruss
    StruktEd

    Edit:

    Kóyaánasqatsi schrieb:

    Wahrscheinlich weil std::wcout relativ neu und Dev-C++ relativ alt ist.

    Und wieso funktioniert eigentlich das Steuerzeichen \f nicht mehr, sowohl bei DevC++ wie auch bei VC++?



  • Habe versucht das Symbol 2600 im RichEditControl darzustellen. Null Erregung, bloss son nichtssagender Balken wird angezeigt.
    Brauchst du wohl ne Schriftart bzw. eine Bitmaplib, welche diese Symbole darstellen kann.
    Teilweise rafft die Symbole 2600-26FF http://en.wikipedia.org/wiki/Miscellaneous_Symbols weder Opera 10, noch IE8, noch Firefox 3.5.5. Wird vermutlich nicht so einfach, ne fertige Lib zu bekommen.


Anmelden zum Antworten