在往 list中写数据时,显示出乱码,最终解决方法如下。
char* temp=(char*) lPeImport.RvaToPtr(pTempDesc->Name);
wchar_t pBuf[20]={0};
int nSize=MultiByteToWideChar(CP_ACP,0,temp,-1,0,0);
MultiByteToWideChar(CP_ACP,0,temp,-1,pBuf,nSize);
m_list_dll.InsertItem(i,pBuf,0);
这里最关键的是用到了
MultiByteToWideChar函数
该函数映射一个字符串到一个宽字符(unicode)的字符串。由该函数映射的字符串没必要是多字节字符组。该函数原型如下:
int MultiByteToWideChar(
UINT CodePage,
DWORD dwFlags,
LPCSTR lpMultiByteStr,
int cchMultiByte,
LPWSTR lpWideCharStr,
int cchWideChar
);
其中第一个参数的值有
CP_ACP:ANSI字符集;CP_MACCP:Macintosh代码页;CP_OEMCP:OEM代码页;
CP_SYMBOL:
符号字符集(42);CP_THREAD_ACP:当前线程ANSI代码页;CP_UTF7:使用UTF-7转换;CP_UTF8:使用UTF-8转换。
关于此函数的具体用法可百度之。