Возникла проблема с переносом софта из Lubuntu в Gentoo. Есть некая самописная прога, использующая ncurses. Под *бунтой все работает как должно. При компиляции в генте все норм, но при запуске вместо русских букв лезет черт знает что. Набросал быстренько тестовую прогу, вот код:
Код: Выделить всё
#include <ncursesw/curses.h>
#include <locale.h>
int main(int argc, char **argv)
{
printf("%s\n", setlocale(LC_ALL, ""));
initscr();
printw("==Тест==");
refresh();
getch();
endwin();
return 0;
}
С setlocale() в *бунту все в порядке, в генте - ни фига, абсолютно все рус. буквы превращаются в кашу, из 4 символов получается последовательность в 22 байта. Символы "=" вставил именно для определения начала и конца нужной последовательности при перенаправлении вывода в файл.
Проверял в голом консольном (текст 80х25) режиме, в терминалах xterm и st - результат абсолютно одинаков.
Вместо ncursesw/curses.h (это *бунтовый вариант, просто файла /usr/include/curses.h там нет) изначально пробовал просто curses.h, разницы абсолютно никакой.
Стандартный ввод/вывод работает нормально, кодировка utf-8, шрифт cyr-sun16 использую, проблем никаких не возникало до сих пор.
Понимаю, что проблема связана с кодировкой/локалью. Гугление и яндексование упорно отсылает к функции setlocale(), но это было сделано сразу при написании.
Был бы очень благодарен за любые подсказки.
Извините, если несколько несвязно изложил мысли.