2012-03-29 15 views
8

Ho un programma scritto in C usando ncurses. Permette all'input dell'utente di visualizzarlo. Non viene visualizzato correttamente se l'utente inserisce i caratteri utf8.Come rendere ncurses visualizzare i caratteri UTF-8 correttamente in C?

Ho salvato l'utente chars inserito in un file. E io cat questo file direttamente in Shell, viene visualizzato correttamente.

Ho cercato stackoverflow e google e ho provato diversi metodi, come il collegamento con ncursesw, visualizzati in modo errato.

E io ldd /usr/bin/screen: libncurses.so.5 => /usr/lib64/libncurses.so.5

screen in grado di visualizzare ciò che l'input dell'utente in modo corretto.

Come rendere ncurses visualizzare i caratteri UTF-8 correttamente?

Qual è il modo generale di visualizzare i caratteri UTF-8 in C utilizzando ncurses?

risposta

14

È necessario aver chiamato setlocale(LC_CTYPE, ""); (con impostazioni locali basate su UTF-8) prima di inizializzare ncurses. Devi anche assicurarti che il tuo ncurses sia effettivamente compilato con un ampio supporto di char ("ncursesw") ma nelle distribuzioni moderne questa è la build di default/only.

+1

C'è un modo semplice per sapere se ncurses è stato creato con un ampio supporto di char? – KyleL

+2

@KdawgUD Su Ubuntu, è possibile installare la libreria con sudo apt-get install libncursesw5-dev. Utilizzare la libreria ncursesw durante la creazione e includere la libreria ncursesw/curses.h – bitrayne

Problemi correlati