Форум для программистов - задавайте интересные вопросы - получайте квалифицированные ответы
Как прочесть utf файл средствами C?
  • REAKTOZREAKTOZ June 2011
    Сейчас разбираю один код и натолкнуся на проблему - при чтении файла сохраненного в кодировке utf-8 без сигнатур, и выводе на экран (если что через pdcurses), кракозябры. при том что русские строки в коде (исходник также сохранен в utf-8 без сигнатур) нормально выводятся. Я думаю проблема в считывании файла - где-то кодировка теряется и функции вывода уже передаются кракозябры.

    Файл открывается через fopen(). Затем он посимвольно считывается в переменную с (unsigned char) через функцию fgetc().
  • beos92beos92 June 2011
    Скорей всего не включен utf8 в pdcurses.

    Что делаем:
    Берем исходники, заходим в папочку 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) Перекомпилируем пример и запускаем - будет нарисована русская строчка.
Webparadox - разработка мобильных приложений под iOS и Android.