03功能之将UTF8转成GB2312
前言:
我们为什么需要这个函数呢,因为我们从文本文件中读取时,编码是ASCII码或者GB2312可能不会出错,但是读取的是UTF8时,就很容易造成乱码,所以我们每次读取时都最好将读取到的内容转成GB2312。
1 函数实现
//UTF8转GBA312 ASCII、GB会正常显示,但是UTF8是可能会乱码,所以最好在读取时转
string UTF8ToGB(const char* str)
{
string result;
WCHAR *strSrc;
LPSTR szRes;
//获得临时变量的大小
int i = MultiByteToWideChar(CP_UTF8, 0, str, -1, NULL, 0);
strSrc = new WCHAR[i + 1];
MultiByteToWideChar(CP_UTF8, 0, str, -1, strSrc, i);
//获得临时变量的大小
i = WideCharToMultiByte(CP_ACP, 0, strSrc, -1, NULL, 0, NULL, NULL);
szRes = new CHAR[i + 1];
WideCharToMultiByte(CP_ACP, 0, strSrc, -1, szRes, i, NULL, NULL);
result = szRes;
delete[]strSrc;
delete[]szRes;
return result;
}