У меня есть файл в 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
Помогите, пожалуйста. Уже весь день не могу найти правильное решение, хотя оно не должно быть сложным.