UTF-8编码:[1,1,1,0,A5,A6,A7,A8],[1,0,B3,B4,B5,B6,B7,B8],[1,0,C3,C4,C5,C6,C7,C8];对应的UNICODE编码:[A5,A6,A7,A8,B3,B4,B5,B6],[B7,B8,C3,C4,C5,C6,C7,C8]CString
LogInDlg::GB2312ToUTF8(char
*str)
{
CString
result;
WCHAR *strSrc = NULL;
TCHAR
*szRes = NULL;
int
i;
//GB2312转换成Unicode
i
= MultiByteToWideChar(CP_ACP, 0, str, -1, NULL,
0);
strSrc = new
WCHAR[i+1];
MultiByteToWideChar(CP_ACP, 0, str, -1,
strSrc,
i);
//Unicode转换成UTF8
i
= WideCharToMultiByte(CP_UTF8, 0, strSrc, -1, NULL, 0, NULL,
NULL);
szRes = new
TCHAR[i+1];
WideCharToMultiByte(CP_UTF8, 0, strSrc, -1,
szRes, i, NULL, NULL);
result =
szRes;
if (strSrc !=
NULL)
{
delete
[]strSrc;
strSrc =
NULL;
}
if (szRes !=
NULL)
{
delete
[]szRes;
szRes =
NULL;
}
return
result;
}CString LogInDlg::UTF8ToGB2312(char
*str)
{
CString
result;
WCHAR *strSrc = NULL;
TCHAR
*szRes = NULL;
int
i;
//
UTF8转换成Unicode
i = MultiByteToWideChar(CP_UTF8, 0, str,
-1, NULL, 0);
strSrc = new
WCHAR[i+1];
MultiByteToWideChar(CP_UTF8, 0, str, -1,
strSrc, i);
//
Unicode转换成GB2312
i = WideCharToMultiByte(CP_ACP, 0,
strSrc, -1, NULL, 0, NULL, NULL);
szRes = new
TCHAR[i+1];
WideCharToMultiByte(CP_ACP, 0, strSrc, -1,
szRes, i, NULL, NULL);
result =
szRes;
if (strSrc !=
NULL)
{
delete
[]strSrc;
strSrc =
NULL;
}
if (szRes !=
NULL)
{
delete
[]szRes;
szRes =
NULL;
}
return
result;
}
参考网址:
http://www.codeproject.com/KB/string/UTF8.aspx
【转载】实现UTF8与GB2312编码格式相互转换(VC)已经验证!,码迷,mamicode.com