@Ffgfhgh

Как правильно сконвертировать файл с кодировкой utf-32 в utf-8 используя библиотеку UTF8-CPP?

У меня есть файл в utf-32 кодировке и мне надо сконвертировать его в utf-8, вот код моей программы:
#include "source/utf8.h"
using namespace std;

int main(int argc, char** argv)
{
    const char* sourceFilePath = "/home/user/utf32.txt";

    ifstream sourceFile(sourceFilePath, std::ifstream::binary);
    ofstream outFile("/home/user/utf8result.txt");

    vector<unsigned char> utf8result;
       utf8::utf32to8(std::istreambuf_iterator<char>(sourceFile),
                      std::istreambuf_iterator<char>(),
                      back_inserter(utf8result));
       outFile.write((char*)&utf8result[0], utf8result.size());

    return 0;
}

Ошибок нету, но новый файл почему-то все равно закодирован в utf-32, это видно из того что размеры полученного и старого файла одинаковы, также посмотрел в HEX Editor - там также показывает, что каждый символ в utf8result.txt занимает 4 байта.
Файл utf8result.txt должен быть в utf-8 кодировке и должен занимать 24 байта. Почему так получается ? Я использовал эту простую, но известную библиотеку:
utfcpp.sourceforge.net
Помогите, пожалуйста. Уже весь день не могу найти правильное решение, хотя оно не должно быть сложным.
  • Вопрос задан
  • 334 просмотра
Пригласить эксперта
Ответы на вопрос 2
utf8::utf32to8(std::istreambuf_iterator<char32_t>(sourceFile),
                      std::istreambuf_iterator<char32_t>(),
                      back_inserter(utf8result));
Ответ написан
Комментировать
Зачем использовать стороннюю библиотеку ? В linux есть функция iconv (из glibc), которая кодирует utf и другие кодировки
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы