我正在尝试将wchar_t Unicode字符添加到C中的ncurses显示中.
我有一个数组:
wchar_t characters[]={L'\uE030', L'\uE029'}; // containing 2 thai letters, for example
Run Code Online (Sandbox Code Playgroud)
然后我尝试将数组中的wchar_t添加到ncurses显示中:
add_wch(characters[0]);
Run Code Online (Sandbox Code Playgroud)
要提供更多信息,使用ASCII执行此操作正常,使用:
char characters[]={'A', 'B'};
// and later...
addch(characters[0]);
Run Code Online (Sandbox Code Playgroud)
要设置区域设置,我添加包含...
#include <locale.h>
// in main()
setlocale(LC_CTYPE,"C-UTF-8");
Run Code Online (Sandbox Code Playgroud)
ncurses包括:
#include <ncurses.h>
Run Code Online (Sandbox Code Playgroud)
编译:
(编辑:添加了c99标准,用于支持通用字符名称.)
gcc -o ncursesutf8 ncursesutf8.c -lm -lncurses -Wall -std=c99
Run Code Online (Sandbox Code Playgroud)
我得到以下编译警告(当然可执行文件将失败):
ncursesutf8.c:48: warning: implicit declaration of function ‘add_wch’
Run Code Online (Sandbox Code Playgroud)
我已经尝试过使用addch看起来像宏来使用wchar_t,但是当我这样做时,Unicode字符不显示,而是显示为ASCII字符而不是.
有什么想法吗?
我正在使用OS X Snow Leopard,10.6.6
编辑:删除wchar_t []分配时使用的错误L'\u0E30'而不是L"\u0E30"等.我还更新了编译器设置以使用C99(添加通用字符名称支持).这两个变化都无法解决问题.
仍然没有答案,有谁知道如何做Unicode ncurses addchar(add_wchar?)?! 救命!
小智 20
广泛的角色支持由ncursesw处理.根据您的发行版,ncurses可能会或可能不会指向那里(看似不在您的发行版中).
尝试使用-lncursesw而不是-lncurses.
此外,对于语言环境,请尝试调用 setlocale(LC_ALL, "")