上次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
[解决办法]
[解决办法]
你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;}//转为UnicodeMultiByteToWideChar(CP_UTF8,0,UTF8,-1,pwText,dwUnicodeLen);//转为CStringstrUnicode.Format(_T("%s"),pwText);//清除内存delete []pwText;//返回转换好的Unicode字串return strUnicode;}
[解决办法]