实现代码
//UTF-8转成Unicode
int length;
wchar_t* wCharUnicode = L"中国你好";
length = wcslen(wCharUnicode); // length = 4;
char* cCharUtf = UnicodeToUtf8(wCharUnicode);
length = strlen(cCharUtf); // length = 12;
// 将UTF格式的char*转为CString
CString strUtf(cCharUtf);
length = strUtf.GetLength(); // length = 6;
char* cCharUtf0000 = recvBuf;
CString strUnicode = UTF82WCS(cCharUtf0000);
length = strUnicode.GetLength(); // length = 4;
下面是工具类------------------------------------------------------------------------------
//UTF8转成Unicode
CString mainDlg::UTF82WCS(const char* szU8)
{
//预转换,得到所需空间的大小;
int wcsLen = ::MultiByteToWideChar(CP_UTF8, NULL, szU8, strlen(szU8), NULL, 0);
//分配空间要给'\0'留个空间,MultiByteToWideChar不会给'\0'空间
wchar_t* wszString = new wchar_t[wcsLen + 1];
//转换
::MultiByteToWideChar(CP_UTF8, NULL, szU8, strlen(szU8), wszString, wcsLen);
//最后加上'\0'
wszString[wcsLen] = '\0';
CString unicodeString(wszString);
delete[] wszString;
wszString = NULL;
return unicodeString;
}