ncurses und UMLAUTE

29/12/2010 - 09:43 von Erich Hoffmann | Report spam
Tag zusammen.


Ich arbeite mich in ncurses ein und habe ein Problem mit
der Ausgabe von grossbuchstabigen Umlauten und Sonderzeichen.
Die _kleinbuchstabigen_ funktionieren alle. Meine Googelei hat noch
kein Ergebnis gebracht (kann an mir liegen, aber "Zeit" habe ich mir
viel genommen).

Ich habe schon in der alt.os.linux.slackware nachgefragt, dann
weitergesucht, und in dieser newsgroup hier gibt es einen Thread vom
Januar 2007 mit dem Titel "ncurses und tastatur". Ehrlich gestanden
bràuchte ich zu diesem Thread vermutlich Verstàndnishilfe.
Jedenfalls scheint es darauf hinauszulaufen, dass setlocale(3)
explizit gesetzt wird. Genau das habe ich aber gemacht. Ob ich
"de_DE" oder "C" setze, macht in der Ausgabe keinen Unterschied.

Dies ist ein slackware 13.1, $LANG ist de_DE.UTF-8,
ncurses ist kompiliert mit --enable-widec, $TERM ist linux.


Hier ist der Quelltext:


/* * * * * * * * * *
* ncurses-utf.c :
* * * * * * * * * */

#include <ncurses.h>
#include <locale.h>

int main(void)
{

setlocale(LC_ALL, "de_DE");


initscr();
raw();

addstr("working: àöü ");
addstr("NOT WORKING ÄÖÜ ß ");
addstr("working ñ à ô ó ë ï ¡ ¿ ");
addstr("NOT WORKING Ñ À Ô Ó Ë Ï ");

refresh();
getch();

endwin();
return 0;

}



Die Ausgabe unterscheidet sich nur kaum je nach Terminal,
/usr/bin/xterm zeigt nichts, /usr/bin/terminal und die tty außerhalb
X zeigen es wie unten. Die Kleinbuchstaben werden
gut gezeigt, die Großbuchstaben als Doppelzeichen, also so:


working: àöü
NOT WORKING �~D�~V�~\ �~_
working ñ à ô ó ë ï ¡ ¿
NOT WORKING �~Q �~@ �~T �~S �~K �~O


-

Ich wàre schon dankbar für einen Fingerzeig, in welche Richtung ich weiter
suchen kann. Terminfo? $TERM?

Gruß, Erich
 

Lesen sie die antworten

#1 Dennis Preiser
29/12/2010 - 10:52 | Warnen spam
Erich Hoffmann wrote:
#include <ncurses.h>
#include <locale.h>

int main(void)
{

setlocale(LC_ALL, "de_DE");

initscr();
raw();

addstr("working: àöü ");
addstr("NOT WORKING ÄÖÜ ß ");
addstr("working ñ à ô ó ë ï ¡ ¿ ");
addstr("NOT WORKING Ñ À Ô Ó Ë Ï ");

refresh();
getch();

endwin();
return 0;

}



Wie sieht die Ausgabe aus, wenn Du

setlocale(LC_ALL, "");

benutzt?

Dennis

Ähnliche fragen