@Andrei1penguin1

Почему некорректно выводятся символы utf-8 в linux?

Доброго времени суток, есть файл с комментариями на нелатинском алфавите, часть файла привожу ниже:
/* ×òåíèå ââåäåííîé ñòðîêè */                ;
ReadConsole (hStdin, str, 80, &result, NULL) ;
str[result] = '\0'; /* çàêîí÷èòü ñòðîêó íóëåâûì ñèìâîëîì */ 
/* Èçîáðàçèòü ASCII-êîä âñåõ ââåäåííûõ ñèìâîëîâ ñòðîêè str */

Необходимо считать и грамотно отобразить этот файл, на данный момент есть следующий код на C:
#include <stdio.h>
#include <wchar.h>


#define MAX_LEN 1024


int main()
{
  FILE *source;
  source = fopen("readfile.c", "r, ccs=UTF16LE");
  wchar_t line[MAX_LEN];

  while((fgetws(line, MAX_LEN, source))!=NULL)
  {
    printf("%ls\n", line);
  }

  fclose(source);
  return 0;
}

Который ничего не выводит

Если выводить файл с помощью обычного char, рисует знаки вопроса на месте нелатинских символов, то же самое происходит кстати и при попытке вывести файл через cat: cat readfile.c

Подскажите пожалуйста, как грамотно вывести информацию из файла средствами C?
  • Вопрос задан
  • 140 просмотров
Пригласить эксперта
Ответы на вопрос 3
ky0
@ky0
Миллиардер, филантроп, патологический лгун
1. Берёте исходники iconv
...
Ответ написан
Комментировать
@SunTechnik
В общем случае:
- у Вас есть файл в некоторой кодировке..
- у Вас есть терминал, который выводит символы в некой кодировке.

Вы сможете прочитать текст только при условии, что обе кодировки совпадают. Или Вам надо перекодировать кодировку файла в текущую кодировкк терминала..

Для решения- надо знать исходную и требуемую кодировку..
Ответ написан
Комментировать
@rPman
, ccs=UTFxxx это придумка Майкрософт с целью диверсии на стандарты (часть из плана по монополизации мира, успешного).

В стандарте c++ есть методы конвертации из одной кодировки в другую std::convert....
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы