CString CStringUtf8ToUnicode( CString Utf8 ) { int wLen = 0; CString strUnicode; LPSTR pBufChar = NULL; LPWSTR pBufWchar = NULL; //CString to char wLen = WideCharToMultiByte(CP_ACP, 0, Utf8, -1, NULL, 0, NULL, NULL); pBufChar = new char[wLen + 1]; memset( pBufChar , 0, wLen + 1 ); WideCharToMultiByte(CP_ACP, 0, Utf8, -1, pBufChar, wLen, NULL, NULL); //char to Unicode wLen = MultiByteToWideChar(CP_UTF8, 0, pBufChar, -1, NULL, NULL); pBufWchar = new wchar_t[wLen]; memset(pBufWchar, 0, wLen * sizeof(wchar_t)); MultiByteToWideChar(CP_UTF8, 0, pBufChar, -1, pBufWchar, wLen); strUnicode = CString(pBufWchar); if( pBufChar ) delete pBufChar; if( pBufWchar ) delete pBufWchar; return strUnicode; }