Я пытаюсь добавить символы Unicode wchar_t на экран ncurses в C.
У меня есть массив:
wchar_t characters[]={L'\uE030', L'\uE029'}; // containing 2 thai letters, for example
И позже я пытаюсь добавить wchar_t из массивана экран ncurses с помощью:
add_wch(characters[0]);
Чтобы получить немного больше информации, работа с ASCII работает нормально, используя:
char characters[]={'A', 'B'};
// and later...
addch(characters[0]);
Для настройки локали я добавляю include...
#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"
и т. Д. Я также обновил setti компилятораngs для использования C99 (чтобы добавить поддержку универсального имени символа).оба изменения не решают проблему.
Все еще нет ответов на этот вопрос, кто-нибудь знает, как сделать Unicode ncurses addchar
(add_wchar?)?!Помогите!