首页 > 代码库 > 【转载】实现UTF8与GB2312编码格式相互转换(VC)已经验证!
【转载】实现UTF8与GB2312编码格式相互转换(VC)已经验证!
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 = http://www.mamicode.com/NULL;
TCHAR *szRes = NULL;
int i;
//GB2312转换成Unicode
i = MultiByteToWideChar(CP_ACP, 0, str, -1, NULL, 0);
strSrc = http://www.mamicode.com/new >
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 = http://www.mamicode.com/NULL;
}
if (szRes != NULL)
{
delete []szRes;
szRes = NULL;
}
return result;
}CString LogInDlg::UTF8ToGB2312(char *str)
{
CString result;
WCHAR *strSrc = http://www.mamicode.com/NULL;
TCHAR *szRes = NULL;
int i;
// UTF8转换成Unicode
i = MultiByteToWideChar(CP_UTF8, 0, str, -1, NULL, 0);
strSrc = http://www.mamicode.com/new >
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 = http://www.mamicode.com/NULL;
}
if (szRes != NULL)
{
delete []szRes;
szRes = NULL;
}
return result;
}
参考网址:
http://www.codeproject.com/KB/string/UTF8.aspx