我试图在C语言的ncurses显示中添加wchar_t Unicode字符。
我有一个数组:
wchar_t characters[]={L'\uE030', L'\uE029'}; // containing 2 thai letters, for example
然后我尝试使用以下方式将数组中的wchar_t添加到ncurses显示器中:
add_wch(characters[0]);
为了提供更多信息,使用ASCII可以正常运行,使用:
To provide a bit more info, doing this with ASCII works ok, using:
char characters[]={'A', 'B'};
// and later...
addch(characters[0]);
为了设置地区语言选项,我添加了以下包含文件:
#include <locale.h>
// in main()
setlocale(LC_CTYPE,"C-UTF-8");
ncurses的包含方式为:
#include <ncurses.h>
使用以下命令进行编译:
(编辑: 添加了 C99 标准,以支持通用字符名称.)
gcc -o ncursesutf8 ncursesutf8.c -lm -lncurses -Wall -std=c99
我得到以下编译警告(当然可执行文件将失败):
ncursesutf8.c:48: warning: implicit declaration of function ‘add_wch’
我尝试只使用addch
,它似乎是宏,可以使用wchar_t工作,但是当我这样做时,Unicode字符不会显示出来,而是显示为ASCII字符。
有什么想法吗?
我正在使用OS X Snow Leopard 10.6.6
编辑:删除了关于wchar_t []
赋值的错误,改用L'\u0E30'
而不是L"\u0E30"
等。 我还更新了编译器设置以使用C99(添加通用字符名称支持)。 这两个更改都无法解决问题。
仍然没有答案,有谁知道如何使用Unicode ncurses的addchar
(add_wchar?)?! 帮帮忙!
""
给setlocale
。 传递""
将得到配置/系统区域设置,这应该基于任何现代系统的 UTF-8。 像"C-UTF-8"
这样的名称是不可移植的。 - R.. GitHub STOP HELPING ICE