首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-05-22 
上次Unicode输出问题未解决就结贴了,重新问一下吧我根据网上的说法,想使用API:WideCharToMultiByte完成转

上次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;}//转为UnicodeMultiByteToWideChar(CP_UTF8,0,UTF8,-1,pwText,dwUnicodeLen);//转为CStringstrUnicode.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的长度

……

热点排行