首页 > 解决方案 > 从 ncurses 中的键盘读取 UTF-8 编码字符

问题描述

在 nCurses 中读取键盘输入时,我使用 getch() 函数,该函数适用于 ASCII 字符,但适用于 UTF-8 编码字符。如果我在键盘上按下字符 ś:

int c = getch();

c 的值应为十六进制:0xC59B。但是当我尝试打印它的值时,我只得到 0xC5。

我如何阅读整个字符并且使用 getch() 正确的功能?

标签: c++utf-8ncurses

解决方案


getch读取字节,但 UTF-8 是多字节的。您可以逐字节读取并解释它,但这是大多数人不需要的工作。get_wch用于读取(整个)宽字符

假设您已经初始化了ncurses 的语言环境:

setlocale(LC_ALL, "");

(如果你不这样做getch,无论如何都不会返回正确的字节)。


推荐阅读