上次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
------解决方案--------------------
------解决方案--------------------
你uft8好象转错了,参考下面代码.
转换完成后用MessageBoxW(0,text,L"title",0);打印出来看看,如果没有乱码在把unicode转ansii
我根据网上的说法,想使用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; } //转为Unicode MultiByteToWideChar(CP_UTF8,0,UTF8,-1,pwText,dwUnicodeLen); //转为CString strUnicode.Format(_T("%s"),pwText); //清除内存 delete []pwText; //返回转换好的Unicode字串 return strUnicode; }
------解决方案--------------------