Unicode Symbol in Konsole anzeigen



  • Hallo zusammen !
    Habe hier http://www.unicode.org/charts/
    mir paar Tabellen runter geladen und jetzt meine Frage.
    Wie kann ich Unicode Symbole in Konsole anzeigen lassen ?
    Einfach mit cout oder etc ausgeben funz nicht.



  • "funz nicht" ist keine Fehlerbeschreibung.

    #include <iostream>
    
    // Windows
    #include <io.h>
    #include <fcntl.h>
    
    int main()
    {
    	_setmode( _fileno( stdout ), _O_U16TEXT );
    
    	for( wchar_t ch = 0x03b1; ch <= 0x03c9; std::wcout.put( ch++ ) );
    }
    

    Funz unter Windows toll.



  • Morgen !
    Wenn ich diese Code ausführe:

    #include <iostream>
    #include <string>
    #include <stdio.h>
    #include <io.h>    // for _setmode()
    #include <fcntl.h> // for _O_U16TEXT
    
    using namespace std;
    
    int main()
    {
    
        _setmode( _fileno( stdout ), _O_U16TEXT );
    	 wchar_t ch = 0x03b1;
    	 wcout << ch;
    
    }
    

    bekommen ich folgende Fehlermeldungen:
    _O_U16TEXT nicht deklariert
    wcout nicht deklariert

    Selbst wenn ich mit andere Unicode probiere:
    http://www.unicode.org/charts/PDF/U2440.pdf
    funz auch nicht.



  • Du compilierst mit mingw, gell? Dann musst halt rausfinden, welche defines die Header wollen um die Symbole zu definieren. In die Header schaun könnt helfen, vielleicht gibts auch irgendwo Dokumentation.

    Plan B: Visual Studio.



  • VS kommt nicht in frage, bin mit Code::Blocks zufrieden



  • Also Plan A?

    Auszug aus MinGWs fcntl.h:

    #if (__MSVCRT_VERSION__ >= 0x0800)
    #define _O_WTEXT	0x10000
    #define _O_U16TEXT	0x20000
    #define _O_U8TEXT	0x40000
    #endif
    


  • c2010 schrieb:

    VS kommt nicht in frage, bin mit Code::Blocks zufrieden

    Selber schuld, kein Mitleid 😉 *scnr*



  • Die Diskussionen könnts ihr euch sparen, habe in anderen Foren gelesen dass GNU Compiler _O_U16TEXT nicht kennt. Header fcntl.h ist für Visual C++ Compiler gedacht aber nicht für GNU. Werde mich weiter damit rum schlagen, danke für die Hilfe, wenn doch von euch einer die Lösung kennt, postet bitte.



  • Interessant, meiner kennt es, siehe oben.



  • tja der selber fehler:
    ||=== Unicode anzeigen, Debug ===|
    ....\C++ Projekte\Unicode anzeigen\main.cpp||In function int main()':| ....\\Unicode anzeigen\\main.cpp|9|error:_O_U16TEXT' was not declared in this scope|
    .....\Unicode anzeigen\main.cpp|9|warning: unused variable '_O_U16TEXT'|
    ||=== Build finished: 1 errors, 1 warnings ===|

    Auszug aus der Header Datei fcntl.h:

    /* NOTE: Text is the default even if the given _O_TEXT bit is not on. */
    #define	_O_TEXT		0x4000	/* CR-LF in file becomes LF in memory. */
    #define	_O_BINARY	0x8000	/* Input and output is not translated. */
    #define	_O_RAW		_O_BINARY
    
    #if (__MSVCRT_VERSION__ >= 0x0800)
    #define _O_WTEXT	0x10000
    #define _O_U16TEXT	0x20000
    #define _O_U8TEXT	0x40000
    #endif
    

    EDIT//
    Lösung:

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        char a = 178;
        cout << endl;
        cout << a;
    
    }
    

    Thema erledigt, danke für die Hilfe ! 🕶 👍