我们经常会遇到中文显示出现乱码问题,assic是单字节编码,经常需要将其转换为Unicode,不然会出现乱码问题。
WCHAR * AnsiToUnicode(const CHAR * lpszStr)
{
WCHAR * lpUnicode;
int nLen;
if (NULL == lpszStr)
return NULL;
nLen = ::MultiByteToWideChar(CP_ACP, 0, lpszStr, -1, NULL, 0);
if (0 == nLen)
return NULL;
lpUnicode = new WCHAR[nLen + 1];
if (NULL == lpUnicode)
return NULL;
memset(lpUnicode, 0, sizeof(WCHAR) * (nLen + 1));
nLen = ::MultiByteToWideChar(CP_ACP, 0, lpszStr, -1, lpUnicode, nLen);
if (0 == nLen)
{
delete []lpUnicode;
return NULL;
}
return lpUnicode;
}
上述代码是将ansic编码转换为Unicode,如果出现乱码,可尝试这种方法