Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
ninja2
969 / 188 / 32
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
#1

Чтение файла в кодировке utf-8 и вывод в консоль - C++

29.11.2014, 14:02. Просмотров 2214. Ответов 4
Метки нет (Все метки)

Здорова!
Пытаюсь прочитать файл в кодировке utf-8 (вот он 0.7z) и вывожу его в консоль, ничего не получается.
Вот код:
Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
#include <fstream>
#include <string>
using namespace::std;
 
int main()
{
    //читаем файл
    string s_result="";
    ifstream ifs("0.html",ifstream::in);
    if(!ifs){cerr <<"don't open file"<<endl; exit(1);}
    else
    {
        string str;
        while(getline(ifs,str))
            s_result+="\n"+str;
    }
 
    //выводятся крякозябры
    cout <<"s_result= "<<s_result<<endl;
 
    //переводим в wstring
    wstring ws_result(s_result.begin(),s_result.end());
 
    //выводит не полностью всю строку а 274 символа, 
    //остальные хз. почему не выводятся
    wcout <<L"ws_result= "<<ws_result<<endl;
 
    return 0;
}

выводится черт знает что, крякозябры выводятся, я уже и setlocale менял и заходил с cmd.exe из него запускал файл и там же менял кодировку на utf-8, cp1251 и 866 но все рамно крякозябры выводятся. Плюс пытаюсь перевести в широкие строки и вывести так оно выводит из 2300 символов (там мб. и больше) всего навсего 274 символов. В чем проблема хз!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.11.2014, 14:02
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Чтение файла в кодировке utf-8 и вывод в консоль (C++):

Создание файла в UTF-8 кодировке
Здравствуйте! Как сделать что бы в данной ситуации файл создавался в utf-8 ...

Не могу разобраться. Чтение и вывод на экран всего содержимого файла .txt на консоль
#include &lt;cstdio&gt; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;fstream&gt;...

Записать в блокнот в кодировке UTF-8
Здравствуйте, как записывать и считывать строки в кодировке UTF-8 ?

Форматный вывод из файла в программе тестирования в неверной кодировке
Нужна Ваша помощь. Есть файл(test), имеющий структуру Нужно сделать так,...

Чтение файла (с кракозябрами) с однобайтовой кодировкой, конвертация в UTF-8 и вывод в другой файл
Добрый день, форумчане. Может у кого есть заготовка или кто поделится советом,...

Чтение текста из текстового фала, обработка слов и вывод в консоль
Задача программы: считать текст из текстового файла; выделить слова с...

4
zer0mail
2451 / 2085 / 216
Регистрация: 03.07.2012
Сообщений: 7,566
Записей в блоге: 1
29.11.2014, 19:22 #2
Как-то так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
char cb[1000];
wchar_t wcb[500];
setlocale(LC_ALL,"Russian"); //Переход к работе с кириллицей
ifstream ifs("B:\\0.html",ifstream::in);
if(!ifs){cerr <<"don't open file"<<endl; exit(1);}
else
{
    while(ifs.getline(cb,1000)) {
    MultiByteToWideChar(CP_UTF8, 0, cb, 1000, wcb, 500);    
    wcout<<wcb<<endl;
    }
}
1
nmcf
6247 / 5559 / 2528
Регистрация: 14.04.2014
Сообщений: 23,373
29.11.2014, 19:39 #3
C++
1
2
3
4
std::locale::global(std::locale(""));
std::locale l_utf8 (std::locale(), new std::codecvt_utf8<wchar_t, 0x10ffffUL, std::codecvt_mode::consume_header>);
std::wifstream wifs(L"d:\\data.txt");
wifs.imbue(l_utf8);
После этого выводить через wcout.
2
ninja2
969 / 188 / 32
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
29.11.2014, 23:57  [ТС] #4
nmcf, Та я уже сделал, там нужно перевести из string utf8 в wstring utf8, перекодировать нужно было, а не просто копировать.
0
nmcf
6247 / 5559 / 2528
Регистрация: 14.04.2014
Сообщений: 23,373
30.11.2014, 07:46 #5
Приведённый фрагмент делает то, о чём ты написал: работает с файлом utf-8, считываться будет уже utf-16 в wstring или в массив wchar_t - это по желанию.
0
30.11.2014, 07:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.11.2014, 07:46
Привет! Вот еще темы с решениями:

Как записать файл в кодировке utf-8?
Вообщет задача такая, нужно файл записать в кодировке utf-8 или unicode и нужно...

Реализовать поиск файла в каталоге и вывод на консоль заданных атрибутов найденного файла
Приведите, пожалуйста, пример кода программы, которая ищет файлы, находящиеся в...

Вывод файла на консоль
Мне нужно, чтобы на консоль данные из файла выводились не в строку, а так как...

Вывод бинарного файла на консоль
Имеется структура typedef struct { int n; char name; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru