1.处理fstream类读取UTF-8时出现乱码问题,思路先将utf-8转换成UNICODE 再转化成ANSI
#include <string>
#include<fstream>
using namespace std;
string changeUTF8ToAnsi(const char * szU8)
{
int wcsLen = ::MultiByteToWideChar(CP_UTF8, NULL, szU8, strlen(szU8), NULL, 0);
wchar_t* wszMultiByte = new wchar_t[wcsLen + 1];
::MultiByteToWideChar(CP_UTF8, NULL, szU8, strlen(szU8), wszMultiByte, wcsLen);
wszMultiByte[wcsLen] = '\0';
int ansiLen = ::WideCharToMultiByte(CP_ACP, NULL, wszMultiByte, wcslen(wszMultiByte), NULL, 0, NULL, NULL);
char* szAnsi = new char[ansiLen + 1];
szAnsi[ansiLen] = '\0';
::WideCharToMultiByte(CP_ACP, NULL, wszMultiByte, wcslen(wszMultiByte), szAnsi, ansiLen, NULL, NULL);
string s=szAnsi;
delete []szAnsi;
delete []wszMultiByte;
return s;
}
2.记录下fstream读取文件
s