上次Unicode输出有关问题未解决就结贴了,重新问一下吧

上次Unicode输出问题未解决就结贴了,重新问一下吧
我根据网上的说法,想使用API:WideCharToMultiByte完成转换后输出。可是总输出乱码。
代码段如下:
  LPCWSTR pUnicode = (LPCWSTR)cArry; //char cArry[]保存Unicode字符串。串与抓包码流是一致的,肯定正确

int nAcpLen = ::WideCharToMultiByte(CP_ACP, NULL, pUnicode, wcslen(pUnicode), NULL, 0, NULL, NULL);

char* pszU8 = new char[nAcpLen + 1];

::WideCharToMultiByte(CP_ACP, NULL, pUnicode, wcslen(pUnicode), pszU8, nAcpLen, NULL, NULL);

pszU8[nAcpLen] = '\0';

CString sInfo;
sInfo.Format("Short Message:%s", szU8); //按照%s打印日志。总是乱码呢。
WriteLog(LL_INFO, sInfo);

将WideCharToMultiByte第一个参数都尝试了。还是乱码。请帮忙看看吧。谢谢了

------解决方案--------------------
你这是什么转什么?
unicode转ansii?
抓包?
你不转直接打印看看?
都是乱码还是汉字是乱码.
http包 应该是utf-8,你试下把utf-8转unicode 然后转ansii
------解决方案--------------------
探讨
你这是什么转什么?
unicode转ansii?
抓包?
你不转直接打印看看?
都是乱码还是汉字是乱码.
http包 应该是utf-8,你试下把utf-8转unicode 然后转ansii

------解决方案--------------------
你uft8好象转错了,参考下面代码.
转换完成后用MessageBoxW(0,text,L"title",0);打印出来看看,如果没有乱码在把unicode转ansii
C/C++ code


CString UTF8ToUnicode(char* UTF8)

{

DWORD dwUnicodeLen;        //转换后Unicode的长度

TCHAR *pwText;            //保存Unicode的指针

CString strUnicode;        //返回值

//获得转换后的长度,并分配内存

dwUnicodeLen = MultiByteToWideChar(CP_UTF8,0,UTF8,-1,NULL,0);

pwText = new TCHAR[dwUnicodeLen];

if (!pwText)

{

return strUnicode;

}

//转为Unicode

MultiByteToWideChar(CP_UTF8,0,UTF8,-1,pwText,dwUnicodeLen);

//转为CString

strUnicode.Format(_T("%s"),pwText);

//清除内存

delete []pwText;

//返回转换好的Unicode字串

return strUnicode;

}

------解决方案--------------------
探讨
引用:
你uft8好象转错了,参考下面代码.
转换完成后用MessageBoxW(0,text,L"title",0);打印出来看看,如果没有乱码在把unicode转ansii

C/C++ code


CString UTF8ToUnicode(char* UTF8)

{

DWORD dwUnicodeLen; //转换后Unicode的长度

……