我有一个使用ncurses用C编写的程序。它让用户输入并显示它。如果用户输入utf8字符,则无法正确显示。
我将chars用户保存到文件中。我直接在Shell中cat
这个文件,它显示正确。
我搜索了stackoverflow和google,并尝试了几种方法,例如与ncursesw的链接,显示不正确。
我ldd /usr/bin/screen
:libncurses.so.5 => /usr/lib64/libncurses.so.5
screen
可以正确显示用户输入内容。
如何让ncurses正确显示UTF-8字符?
使用ncurses在C中显示UTF-8字符的一般方法是什么?
答案 0 :(得分:14)
在初始化ncurses之前,您需要调用setlocale(LC_CTYPE, "");
(配置了基于UTF-8的语言环境)。您还需要确保您的ncurses实际上是使用宽字符支持(“ncursesw”)构建的,但在现代发行版中,这是默认/唯一构建。
答案 1 :(得分:0)
#need these as well on top of installation and locate setting
#at least check locale
locale
locale-gen en_US.UTF-8
#vim ~/.bashrc # add 3 lines once ok and fix the profile
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
export NCURSES_NO_UTF8_ACS=1