一尘不染

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

linux

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

我将输入的字符用户保存到文件中。而且我cat直接在Shell中将此文件正确显示。

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

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

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

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

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


阅读 359

收藏
2020-06-02

共1个答案

一尘不染

setlocale(LC_CTYPE, "");在初始化ncurses之前,您需要先进行调用(已配置基于UTF-8的语言环境)。您还需要确保您的ncurses实际上是在广泛的char支持下构建的(“
ncursesw”),但是在现代发行版中,这是默认/唯一的构建。

2020-06-02