失去的网络数据里有不存在这三个字,可str.Find却得到-1找不到
得到的网络数据里有不存在这三个字,可str.Find却得到-1找不到
是因为中文字符的原因吗,查找返回数据中的英文单词都可以得到索引位置
------解决思路----------------------
如果你查找的是中文字符, 那肯定就是这个原因了。
一般web上传输的都是utf8编码。
不建议使用ReadString,而是ReadData这样的二进制读取。
然后再根据实际数据进行转码,否则乱是肯定的了。
你这个问题,只需要在int n=str.Find("不存在");这里下断, 让程序执行到这里, 然后看str中保存的是什么, 是否正确显示即可知道。
------解决思路----------------------
楼上说的基本正确
http默认是utf8编码
除非你强制成gbk big5之类的编码,否则就是utf8
你直接使用unicode [utf-16]编码的中文进行查找,当然找不到
一般都是使用
WideCharToMultiByte , 把unicode字符串转换成utf8编码字符串
然后进行查询
在web编程里,unicode方式的操作是不推荐的,应该全部使用utf8编码来实现
是因为中文字符的原因吗,查找返回数据中的英文单词都可以得到索引位置
CInternetSession Session;
CHttpFile* pHttp=NULL;
pHttp=(CHttpFile*)Session.OpenURL(_T("http://www.baidu.com/1.txt"));
CString str;
char sRecived[1024];
while(pHttp->ReadString((LPTSTR)sRecived,1024)!=NULL) {
str+=sRecived;}
int n=str.Find("不存在");
------解决思路----------------------
如果你查找的是中文字符, 那肯定就是这个原因了。
一般web上传输的都是utf8编码。
不建议使用ReadString,而是ReadData这样的二进制读取。
然后再根据实际数据进行转码,否则乱是肯定的了。
你这个问题,只需要在int n=str.Find("不存在");这里下断, 让程序执行到这里, 然后看str中保存的是什么, 是否正确显示即可知道。
------解决思路----------------------
楼上说的基本正确
http默认是utf8编码
除非你强制成gbk big5之类的编码,否则就是utf8
你直接使用unicode [utf-16]编码的中文进行查找,当然找不到
一般都是使用
WideCharToMultiByte , 把unicode字符串转换成utf8编码字符串
然后进行查询
在web编程里,unicode方式的操作是不推荐的,应该全部使用utf8编码来实现