如何解决带有 ncurses 的 C99 UTF8 字符
我正在玩 ncurses
并且遇到了问题。我想用 Unicode 块字符 (U+2588,█) 绘制一个简单的框,但无法正确显示:
如您所见,我想要的字符显示为~H
。
我听从了 a similar question 的指示来到了发球台。最小工作示例:
#include <locale.h>
#include <ncurses.h>
int main() {
setlocale(LC_ALL,""); // must be caled before initscr
WINDOW *win = initscr();
int w,h;
getmaxyx(win,h,w);
// should fill the left half of the
// terminal window with filled block characters
int i,j;
for (i = 0; i < h; i++) {
for (j = 0; j < w/2; j++) {
mvaddch(x,y,L'\u2588');
}
}
refresh(); // show changes
getch(); // wait for user input
endwin(); // kill window
return 1;
}
编译:
gcc main.c -o main -std=c99 -lncurses
我的 PC 语言环境是 en_US.UTF-8
,我使用的是无油终端,当然是 perfectly capable of dislaying utf8:
这是一个非常简单的程序,我不确定这里出了什么问题。有什么建议吗?
解决方法
手册页提供了用于函数参数的 short overview of data-types。
在示例中,L'\u2588'
是一个宽字符,它将存储在 wchar_t
类型中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。