为什么ncurses不会输出UTF8字符串的所有外来字符?

时间:2018-06-08 19:39:15

标签: c utf-8 ncurses

尝试在ncurses下获得对UTF8的完全支持。我建立了具有广泛字符支持的ncurses 5.9。如果我有一个utf8字符串,如: D0 9D D0 BE D0 B2 D1 8B D0 B9将使用printf在普通控制台中输出Новый。如果我开始使用ncurses并使用waddstr,我只会获得一些字符:?~]ов?~Kй。为什么它不起作用,嵌入式转义序列有什么意义〜]和~K?

我包含广泛版本的标题并与内置的宽库链接。

这是使用开放的watcom(静态链接)构建的,事实证明OW总是使用“C”语言环境,因此重建了删除HAVE_LOCALE_H的库(这允许ncurses从环境变量中提取信息)情况1}})。所以现在摆脱了LANG='en_US.UTF-8'~]但仍然得到~K(现在? ов? й换新行不起作用)。

所以这已经变成了另外两个问题:

1)ncurses对c库有什么要求? (显然ncurses处理一些多字节字符就好了,但这两个字符仍然存在问题)

2)为什么\n字符停止工作?

TIA !!

1 个答案:

答案 0 :(得分:1)

也许你忘了设置语言环境:

setlocale(LC_ALL, "");

如手册页的Initialization部分所述。