CHttpFile接受字符串转码BUG?
时间:2011-12-28
来源:互联网
C/C++ code
代码基本是这样,当返回正常值,里面含有汉字时,转码正常.
但是当返回值为"success0",这个值,也就是strRes里,转码后,字符串的后面多了一节乱码,现在完全想不明白,请高手解答
CString res = _T(""); CInternetSession session; CHttpConnection *httpConn = session.GetHttpConnection(m_strServer,0, m_iPort,0,0); CHttpFile *ioReader =httpConn->OpenRequest(0, requestString, NULL, 1, NULL, _T("HTTP/1.1"), INTERNET_FLAG_DONT_CACHE); // ioReader->SendRequest(headers, // headers.GetLength(), // strData.GetBuffer(strData.GetLength()), // (DWORD)strData.GetLength()); ioReader->SendRequest(); string strRes; char temp[1024]; memset(temp, '\0', 1024); while ( 0 < ioReader->Read(temp, 1024)) { // strRes = strRes + temp; strRes.append(temp, strlen(temp)-4); memset(temp, '\0', 1024); } CString Utf8ToWchar(string a, int arrLen) { CString res = _T(""); int len = MultiByteToWideChar(CP_UTF8, 0, a.c_str(), 0, NULL, 0); wchar_t *temp = new wchar_t[arrLen + 1]; char *buf = new char[arrLen + 1]; memset(buf, '\0', arrLen + 1); memset(temp, '\0', arrLen+1); MultiByteToWideChar(CP_UTF8, 0, a.c_str(), arrLen+1, temp, arrLen); WideCharToMultiByte(CP_ACP, 0, temp, arrLen+1, buf, arrLen+1, NULL, NULL); // res.Format("%s",temp); // res.ReleaseBuffer(); res.Format("%s",buf); delete temp; delete buf; return res; }
代码基本是这样,当返回正常值,里面含有汉字时,转码正常.
但是当返回值为"success0",这个值,也就是strRes里,转码后,字符串的后面多了一节乱码,现在完全想不明白,请高手解答
作者: dyfxpu0215 发布时间: 2011-12-28
是否正确处理结束符,多出的乱码估计是结束符处理不正确
作者: oyljerry 发布时间: 2011-12-28
引用 1 楼 oyljerry 的回复:
是否正确处理结束符,多出的乱码估计是结束符处理不正确
是否正确处理结束符,多出的乱码估计是结束符处理不正确
那个接受到的时候,本来后面有 10 13 10 13四个字符,strRes.append的时候,没拷贝进去,事实我拷贝进去也是出错.你仔细看Utf8ToWchar里面,空间都是指定长度的,但是转换完,后面就多出了乱码,长度也变了,不知道为什么.
作者: dyfxpu0215 发布时间: 2011-12-28
memset(temp, '\0', arrLen+1);
换成
memset(temp, '\0', (arrLen+1) * sizeof(wchar_t));
试试
换成
memset(temp, '\0', (arrLen+1) * sizeof(wchar_t));
试试
作者: cuidx 发布时间: 2011-12-28
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28