Сейчас разбираю один код и натолкнуся на проблему - при чтении файла сохраненного в кодировке utf-8 без сигнатур, и выводе на экран (если что через pdcurses), кракозябры. при том что русские строки в коде (исходник также сохранен в utf-8 без сигнатур) нормально выводятся. Я думаю проблема в считывании файла - где-то кодировка теряется и функции вывода уже передаются кракозябры.
Файл открывается через fopen(). Затем он посимвольно считывается в переменную с (unsigned char) через функцию fgetc().
Что делаем: Берем исходники, заходим в папочку win32 и компилируем (использовал VS2005): nmake /f vcwin32.mak WIDE= DLL= UTF8= all Проверял на примере newdemo из pdcurses: 1) В редакторе студии правим английскую строчку на русскую и сохраняем файл в кодировке UTF8 (Save As -> Encoding); 2) Обязательно убираем Byte-order mark (первые 3 байта) из файла если они есть. Они используются, чтобы показать, что документ в кодировке UTF8. Умный компилятор при этом автоматически переведет нашу строчку из UTF8 в текущую кодировку (1251) и сохранит ее в бинарном модуле вместо строки в UTF8. Нам это не нужно, кроме того так не будет работать; 3) Перекомпилируем пример и запускаем - будет нарисована русская строчка.