如何让ncurses在C中正确显示UTF-8字符?

时间:2012-03-29 09:23:12

标签: c linux screen ncurses

我有一个使用ncurses用C编写的程序。它让用户输入并显示它。如果用户输入utf8字符,则无法正确显示。

我将chars用户保存到文件中。我直接在Shell中cat这个文件,它显示正确。

我搜索了stackoverflow和google,并尝试了几种方法,例如与ncursesw的链接,显示不正确。

ldd /usr/bin/screenlibncurses.so.5 => /usr/lib64/libncurses.so.5

screen可以正确显示用户输入内容。

如何让ncurses正确显示UTF-8字符?

使用ncurses在C中显示UTF-8字符的一般方法是什么?

2 个答案:

答案 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