Вечная проблема русского языка

Доброго времени суток.
Пытаюсь освоить библиотеку ncurses под Linux.
Пишу:

#include "ncurses.h"

int main()
{
    initscr();
    printw( "Русские буковки" );
    getch();
    endwin();
    return 0;
}

Выводятся кракозябры, да ещё и в бОльшем количестве, чем исходное сообщение. Причём вывод русских символов через cout или printf работает нормально.

Что не так с ncurses?

Установи локаль, линкуй с поддержкой wchar_t — флаг lncursesw.

gcc -lncursesw prog.c
#include <ncurses.h>
#include <locale.h>

int main()
{
    setlocale(LC_ALL, "");
    initscr();
    printw("Русские буковки\n");
    getch();
    endwin();
    return 0;
}

Уже пытался. Компилятор ругается:

cannot find -lncursesw

Я пытался кастовать:

sudo apt-get install libncursesw5

Ругается:

Уже установлена самая новая версия libncursesw5

Кстати, проблему то мы решили, но не разобрались, почему она возникает?

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.

Ответить

Вы можете использовать разметку markdown для оформления комментариев и постов. Используйте функцию предпросмотра для проверки корректности разметки.

Пожалуйста, оформляйте исходный код в соответствии с правилами разметки. Для того, чтобы вставить код в комментарий, скопируйте его в текстовое поле ниже, после чего выделите то, что скопировали и нажмите кнопку «код» в панели инструментов. Иначе ваш код может принять нечитаемый вид.

Либо производите оформление кода вручную, следующим образом:

``` #include <iostream> using namespace std; int main() { // ... } ```

Предпросмотр сообщения

Ваше сообщение пусто.