Когда я попытался прочитать содержимое файла, используя код на С ++, он показал мне ненужные символы внутри моей переменной строки. Я очень уверен, что это потому, что файл сохранен в форме utf-16 LE. Я открыл файл вручную и сохранил его в utf-8, а затем с помощью кода на С ++ смог прочитать содержимое в моей переменной переменной. Таким образом, хочу функцию c ++, которая помогает мне открыть файл в utf-8
Код, который я попробовал:
include <iostream>
#include <fstream>
#include <string>
#include <locale>
#include <codecvt>
#include <cstdio>
#include <stdio.h>
#include <fcntl.h>
#include <iostream>
#include <fstream>
#include <locale>
#include <codecvt>
#include <sstream>
using namespace std;
int main() {
// std::ifstream fin("Export_20190715144621.txt", std::ios::binary);
std::ifstream fin("Export_20190715144621.txt", std::ios::binary);
//skip BOM
fin.seekg(2);
//read as raw bytes
std::stringstream ss;
ss << fin.rdbuf();
std::string bytes = ss.str();
//make sure len is divisible by 2
int len = bytes.size();
if (len % 2) len--;
std::wstring sw;
for (size_t i = 0; i < len;)
{
//little-endian
int lo = bytes[i++] & 0xFF;
int hi = bytes[i++] & 0xFF;
sw.push_back(hi << 8 | lo);
}
std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> convert;
std::string utf8 = convert.to_bytes(sw);
return 0;
}
Я не знаю, что не так с этим кодом, но я не удалось получить данные в строке utf8