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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.77
pav1uxa
1761 / 1601 / 610
Регистрация: 23.01.2014
Сообщений: 5,769
Завершенные тесты: 1
#1

Перекодировать из UCS-2 Little Endian в UTF - C++

13.02.2014, 19:22. Просмотров 1673. Ответов 6
Метки нет (Все метки)

Есть много файлов *.txt в кодировке (как я понял) UCS-2 Little Endian. Как перевести эти файлы в кодировку UTF или ANSI? Пока что делаю это вручную с помощью Notepad++ -> Кодировки -> Преобразовать в ANSI, но нужно сделать программно.

Добавлено через 18 часов 34 минуты
up.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gazlan
Нарушитель
3129 / 1904 / 285
Регистрация: 27.08.2010
Сообщений: 5,133
Записей в блоге: 1
13.02.2014, 19:44     Перекодировать из UCS-2 Little Endian в UTF #2
WideCharToMultiByte()
pav1uxa
1761 / 1601 / 610
Регистрация: 23.01.2014
Сообщений: 5,769
Завершенные тесты: 1
18.02.2014, 19:09  [ТС]     Перекодировать из UCS-2 Little Endian в UTF #3
Цитата Сообщение от gazlan Посмотреть сообщение
WideCharToMultiByte()
По ссылке не нашел ничего по UCS-2.

UP
gazlan
Нарушитель
3129 / 1904 / 285
Регистрация: 27.08.2010
Сообщений: 5,133
Записей в блоге: 1
18.02.2014, 19:37     Перекодировать из UCS-2 Little Endian в UTF #4
UCS-2. - вариант Unicode. По ссылке есть все, что вам требуется.
pav1uxa
1761 / 1601 / 610
Регистрация: 23.01.2014
Сообщений: 5,769
Завершенные тесты: 1
18.02.2014, 22:47  [ТС]     Перекодировать из UCS-2 Little Endian в UTF #5
Вопрос остался в силе.

Добавлено через 2 часа 2 минуты
Вот мой код
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <fstream>
using namespace std;
int main() {
    string str;
    ifstream file("1.txt");
    while (getline(file, str)) {
      cout<<str<<endl;
    }
    return 0;
}
Выводит иероглифы, и почему то даже не весь файл, а только первые 16 строчек. Если вывод делать через printf("%s", str.c_str()), то выводит вообще только одну первую строчку файла, непонятно почему.

Как здесь применить WideCharToMultiByte(), чтобы вывести файл через переменную типа std::string?
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12534 / 7096 / 797
Регистрация: 27.09.2012
Сообщений: 17,508
Записей в блоге: 2
Завершенные тесты: 1
18.02.2014, 23:33     Перекодировать из UCS-2 Little Endian в UTF #6
ну если работаете с юникодом, то wstring, wcout, wifstream
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.02.2014, 13:44     Перекодировать из UCS-2 Little Endian в UTF
Еще ссылки по теме:

C++ Big-endian тестирование
C++ Перегрузка ifstream и ofstream для работы с файлами в little-endian формате?
Как проще всего работать с Big-Endian C++ ? C++
C++ Подскажите с кодировкой файла в UCS-2
C++ Из little endian в big endian

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

Или воспользуйтесь поиском по форуму:
pav1uxa
1761 / 1601 / 610
Регистрация: 23.01.2014
Сообщений: 5,769
Завершенные тесты: 1
19.02.2014, 13:44  [ТС]     Перекодировать из UCS-2 Little Endian в UTF #7
Цитата Сообщение от Croessmah Посмотреть сообщение
wstring, wcout, wifstream
Поменять string на wstring, cout на wcout, wifstream на wifstream? Не работает. вывод такое же.
Yandex
Объявления
19.02.2014, 13:44     Перекодировать из UCS-2 Little Endian в UTF
Ответ Создать тему
Опции темы

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