2,586
社区成员
发帖
与我相关
我的任务
分享
string CDllValidateDlg::MultiByteToUtf8( const char* pszMultiByte )
{
string strUtf8;
if( NULL == pszMultiByte )
{
return strUtf8;
}
int iNumCharacter = 0;
//convert from MultiByte to WideChar
wstring wcsText;
iNumCharacter = MultiByteToWideChar( CP_ACP, 0, pszMultiByte, -1, NULL, 0 );
wcsText.resize( iNumCharacter + 1 );//addition 1 for '\0'
MultiByteToWideChar( CP_ACP, 0, pszMultiByte, -1, &wcsText[ 0 ], iNumCharacter );
//convert from WideChar to utf8
iNumCharacter = WideCharToMultiByte( CP_UTF8, 0, &wcsText[ 0 ], -1, NULL, 0, NULL, NULL );
strUtf8.resize( iNumCharacter + 1 );
WideCharToMultiByte( CP_UTF8, 0, &wcsText[ 0 ], -1, &strUtf8[ 0 ], iNumCharacter, NULL, NULL );
DWORD error = GetLastError();
return strUtf8;
}