C/C++ UTF-8 Zeichen mit ncurses in LXTerminal

schl3ck

schon lange hier
Hey Leute :)

ja, ich schon wieder. Ich bekomms einfach nicht hin, dass auf Linux im LXTerminal die UTF-8 Zeichen mittels ncurses korrekt angezeigt werden.

Wenn ich zum Beispiel "\u2588" oder "\xE2\x96\x88" mittels cout ins Termial schreibe, wird mir "█" angezeigt, was auch so sein soll. Allerdings mittels ncurses und printw(const char*) oder addch(char) bekomm ichs nicht hin. Für Locale habe ich UTF-8 und de_AT eigestellt, falls das was damit zu tun hat.
Wenn ich folgenden Code Ausführe, wird angezeigt, dass das Terminal nicht das Wide-Character-Set unterstützt (WACS_S1 ist ja ein Zeichen daraus).
Code:
#include <iostream>
using namespace std;

int main()
{
#ifdef WACS_S1
  cout << "Das Terminal unterstützt wide characters.";
#else
  cout << "Das Terminal unterstützt nicht wide characters.";
#endif
  return 0;
}

Auf meinem Windows PC unterstützt CMD das Wide-Character-Set und zeigt mit PDCurses (mit addch und printw) es auch richtig an, allerdings mit cout alleine muss ich "cout << char(219);" verwenden, also das Extended ASCII Set von MS-DOS bzw. IBM PC.

Weiß denn jemand, was ich da machen kann? Oder gibt es da einfach keine Lösung? (Was mir etwas komisch vorkommen würde, da es ja mit cout direkt funktioniert...).
Danke schon einmal ;)
 
Oben