2012-03-29 16 views
8

Tengo un programa escrito en C usando ncurses. Permite que el usuario ingrese y lo muestre. No se visualiza correctamente si el usuario ingresa caracteres utf8.¿Cómo hacer que ncurses muestre los caracteres UTF-8 correctamente en C?

Guardé el usuario de caracteres en un archivo. E I cat este archivo directamente en Shell, se muestra correctamente.

Busqué stackoverflow y google, e intenté varios métodos, como el enlace con ncursesw, mostrar incorrectamente.

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

screen puede mostrar lo que la entrada del usuario correctamente.

¿Cómo hacer que ncurses muestre los caracteres UTF-8 correctamente?

¿Cuál es la manera general de mostrar caracteres UTF-8 en C usando ncurses?

Respuesta

14

Debe haber llamado setlocale(LC_CTYPE, ""); (con una configuración regional basada en UTF-8 configurada) antes de inicializar ncurses. También debe asegurarse de que sus ncurses estén realmente construidos con soporte amplio de caracteres ("ncursesw"), pero en las distribuciones modernas esta es la compilación predeterminada/única.

+1

¿Hay alguna manera fácil de saber si ncurses se construyó con soporte de chasis ancho? – KyleL

+2

@KdawgUD En Ubuntu, puede instalar la biblioteca con sudo apt-get install libncursesw5-dev. Utilice la biblioteca ncursesw al compilar e incluya la biblioteca ncursesw/curses.h – bitrayne

Cuestiones relacionadas