Форум программистов, компьютерный форум CyberForum.ru

Работа с кодировками файла (АНСИ и ЮТФ-8) - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 31, средняя оценка - 4.71
BESSON_off
 Аватар для BESSON_off
3 / 0 / 1
Регистрация: 08.07.2013
Сообщений: 329
17.12.2013, 17:56     Работа с кодировками файла (АНСИ и ЮТФ-8) #1
Всем здрасти!

Подскажите пожалуйста, каким образом можно реализовать следующее:

1) Как программно преобразовать текст из ANSI в UTF-8, и наоборот из UTF-8 в ANSI?

2) Как для создаваемого файла установить кодировку UTF-8? ANSI?

3) Как, при открытии файла, можно определить его кодировку, чтобы если она не ANSI, преобразовать её в таковую?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.12.2013, 17:56     Работа с кодировками файла (АНСИ и ЮТФ-8)
Посмотрите здесь:

C++ С++ работа с текстом из файла
C++ Данные.работа с данными из файла ?
Проблемы с кодировками C++
Запись текста в файл разными кодировками C++
Работа со структурами и чтением из файла C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.12.2013, 05:10     Работа с кодировками файла (АНСИ и ЮТФ-8) #41
Так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    //setlocale(LC_ALL, "");
   
   wofstream wfout ("temp.txt");
   wfout.imbue(locale("rus_rus.866"));
   
   wstring ws = L"Январь";
   wfout << ws;
   wfout.close();
    
   wifstream wfin("temp.txt");
   if (!wfin) cout << "Error!" << endl;
   else
   {
        wfin.imbue(locale("rus_rus.866"));
        wstring wstr;
        wfin >> wstr;
        wcout.imbue(locale("rus_rus.866"));
        wcout << wstr << endl;
        wcout << L"Русский текст" << endl;
   }
Или так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    setlocale(LC_ALL, "");
   
   wofstream wfout ("temp.txt");
   wfout.imbue(locale("rus_rus.1251"));
   
   wstring ws = L"Январь";
   wfout << ws;
   wfout.close();
    
   wifstream wfin("temp.txt");
   if (!wfin) cout << "Error!" << endl;
   else
   {
        wfin.imbue(locale("rus_rus.1251"));
        wstring wstr;
        wfin >> wstr;
        //wcout.imbue(locale("rus_rus.1251"));
        wcout << wstr << endl;
        wcout << L"Русский текст" << endl;
   }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.12.2013, 16:04     Работа с кодировками файла (АНСИ и ЮТФ-8)
Еще ссылки по теме:

Работа со строками текстового файла C++
Работа со строкой из файла C++
Создание файла и работа с ним C++

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

Или воспользуйтесь поиском по форуму:
BESSON_off
 Аватар для BESSON_off
3 / 0 / 1
Регистрация: 08.07.2013
Сообщений: 329
25.12.2013, 16:04  [ТС]     Работа с кодировками файла (АНСИ и ЮТФ-8) #42
Парни, всем спасибо, разобрался!
Проблема оказалась вот в чем (для будущих соискателей способов конвертации символов UTF-8 в ANSI и обратно) - дело в том, что я не понимал самой сути функций WideCharToMultiByte и MultiByteToWideChar. Я думал, что кодировка UTF-8 - это уже и есть готовые широкие символы, которые для использования через ANSI, нужно просто конвертировать, поэтому дело не шло. Оказалось, что эти две функции, это некое среднее между ANSI и UTF, то есть для того, чтобы перевести любую кодировку в ту, которая необходима нужно сначала перевести строку символов в широкие символы и дальше уже приводить к той кодировке, которая необходима... Все дело было в логике =) Функции отлично работают.
Yandex
Объявления
25.12.2013, 16:04     Работа с кодировками файла (АНСИ и ЮТФ-8)
Ответ Создать тему
Опции темы

Текущее время: 17:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru