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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.77
pav1uxa
1710 / 1550 / 599
Регистрация: 23.01.2014
Сообщений: 5,601
Завершенные тесты: 1
13.02.2014, 19:22     Перекодировать из UCS-2 Little Endian в UTF #1
Есть много файлов *.txt в кодировке (как я понял) UCS-2 Little Endian. Как перевести эти файлы в кодировку UTF или ANSI? Пока что делаю это вручную с помощью Notepad++ -> Кодировки -> Преобразовать в ANSI, но нужно сделать программно.

Добавлено через 18 часов 34 минуты
up.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.02.2014, 19:22     Перекодировать из UCS-2 Little Endian в UTF
Посмотрите здесь:

Преобразовние Utf-16 <=> Utf-8 C++
Конвертация из ASCII в UTF-32 или UTF-8 в UTF-32 C++
Порядок байт в big-endian и little-endian C++
Как объединить пару байт в слово? (Загрузка WAV, Big Endian) C++
C++ Перекодировать текст с UTF-8 в ASCII
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gazlan
2867 / 1815 / 272
Регистрация: 27.08.2010
Сообщений: 4,916
Записей в блоге: 1
13.02.2014, 19:44     Перекодировать из UCS-2 Little Endian в UTF #2
WideCharToMultiByte()
pav1uxa
1710 / 1550 / 599
Регистрация: 23.01.2014
Сообщений: 5,601
Завершенные тесты: 1
18.02.2014, 19:09  [ТС]     Перекодировать из UCS-2 Little Endian в UTF #3
Цитата Сообщение от gazlan Посмотреть сообщение
WideCharToMultiByte()
По ссылке не нашел ничего по UCS-2.

UP
gazlan
2867 / 1815 / 272
Регистрация: 27.08.2010
Сообщений: 4,916
Записей в блоге: 1
18.02.2014, 19:37     Перекодировать из UCS-2 Little Endian в UTF #4
UCS-2. - вариант Unicode. По ссылке есть все, что вам требуется.
pav1uxa
1710 / 1550 / 599
Регистрация: 23.01.2014
Сообщений: 5,601
Завершенные тесты: 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
Модератор
Эксперт С++
 Аватар для Croessmah
11841 / 6820 / 771
Регистрация: 27.09.2012
Сообщений: 16,911
Записей в блоге: 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++ Из UCS-2 Little Endian в UTF-8 без BOM
C++ Big-endian тестирование
C++ Перегрузка ifstream и ofstream для работы с файлами в little-endian формате?

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

Или воспользуйтесь поиском по форуму:
pav1uxa
1710 / 1550 / 599
Регистрация: 23.01.2014
Сообщений: 5,601
Завершенные тесты: 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
Ответ Создать тему
Опции темы

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