[英]Print long unicode in ncurses
我需要在终端上为我的游戏打印一些unicode字符,有些像这样, \\U0001F0A1
和我的代码
#include <curses.h>
#include <locale.h>
int main(){
setlocale(LC_ALL, "");
initscr();
printw("\U0001F0A1");
getch();
endwin();
return 0;
}
所有打印出来的都是空白屏幕,但是当我尝试使用printf时,它可以正常打印出来的卡片。
可能的问题是:ncurses使用wcwidth
来确定字符的宽度,而printf
不会检查。 您计算机上的区域设置信息太旧,无法提供正确的结果。
检查我的Debian测试,这是有效的(使用问题中给出的示例程序,编译/链接与ncursesw) - 请参阅屏幕截图:
根据fileformat-info ,这来自Unicode 6.0(2010)。 取决于您使用的系统,例如Debian或Ubuntu,可能是“最近的”。
ncurses需要正确的wcwidth
语言环境信息,而printf
不使用wcwidth-information。 如果你的语言环境信息太旧, wcwidth
返回一个负值,告诉ncurses该字符是非打印的。 在这种情况下,ncurses将显示一个空白。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.