Я закончил тем, что делал это на Лиспе вместо Си :)
аюсь добавить символы 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 <locale.h>
// in main()
setlocale(LC_CTYPE,"C-UTF-8");
Курсы включают в себя:
#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 (чтобы добавить поддержку универсального имени символа). оба изменения не решают проблему.
До сих пор нет ответов на этот вопрос, кто-нибудь знает, как сделать Uncode ncursesaddchar
(add_wchar?)?! Помогите!