64,639
社区成员
发帖
与我相关
我的任务
分享
BOOL CXXXDlg::MultiByteToUTF8(LPCSTR pMB, char *pUTF8str)
{
try
{
int nLenWideCharStr = MultiByteToWideChar(CP_ACP, 0, pMB, -1, NULL, 0);
if(!nLenWideCharStr)
return FALSE;
wchar_t *pWideCharStr = new wchar_t[(nLenWideCharStr + 2)*sizeof(wchar_t)];
ZeroMemory(pWideCharStr, (nLenWideCharStr + 2)*sizeof(wchar_t));
MultiByteToWideChar(CP_ACP, 0, pMB, -1, pWideCharStr, nLenWideCharStr +1);
int len = WideCharToMultiByte(CP_UTF8, 0, pWideCharStr, -1, 0, 0, 0, 0);
if(!len)
return FALSE;
WideCharToMultiByte(CP_UTF8, 0, pWideCharStr, -1, pUTF8str, len+1, 0, 0);
delete [] pWideCharStr;
return TRUE;
}
catch (std::bad_alloc &e)
{
AfxMessageBox("Failed to allocate on heap.");
return FALSE;
}
}