小弟我在使用libcurl的时候,获取其他网站的数据都正确,但是获取分智的都是乱码
我在使用libcurl的时候,获取其他网站的数据都正确,但是获取分智的都是乱码
我在使用libcurl的时候,获取其他网站的数据都正确,但是获取分智的都是乱码
这是怎么回事?
------解决方案--------------------
当给http报头设置了gzip或deflate或gzip, deflate压缩算法后(chunk = curl_slist_append( chunk, "Accept-Encoding: gzip, deflate" );),用curl抓取到的网页是乱码,解决办法大致有三种:
1.去掉http报头对gzip的添加;
2.将gzip换成gunzip;
3.http报头添加gzip或deflate或gzip, deflate算法,然后对抓取的网页进行解压。
1和2都用过了,会出现抓取网页不全的现象,所以最好的办法还是第3种。
但是采用第3种方法,假如将文件保存成(写文件std::ofstream("a.txt")).txt(或者其他非压缩包格式),然后再将格式改为.gz,最后再用gzip.exe -d [压缩文件名/路径](如
E:\gzip.exe -d e:\test\sohu.txt)会出现unexpected end of file, corrupted data or a CRC error等各种莫名奇妙的错误),所以最好将文件保存成.gz或.zip或.tar等格式并且写文件必须以binary的形式进行写文件操作,std::ofstream("a.gz", std::ios::binary
------解决方案--------------------
std::ios::trunc)。
------解决方案--------------------
Content-Encoding :gzip
是不是要解压出来阿?
------解决方案--------------------
这也不是你的问题。。。
HTTP Header里面你不设置gzip,server就不应该给你zip过的内容,那是server的问题。
我在使用libcurl的时候,获取其他网站的数据都正确,但是获取分智的都是乱码
这是怎么回事?
------解决方案--------------------
当给http报头设置了gzip或deflate或gzip, deflate压缩算法后(chunk = curl_slist_append( chunk, "Accept-Encoding: gzip, deflate" );),用curl抓取到的网页是乱码,解决办法大致有三种:
1.去掉http报头对gzip的添加;
2.将gzip换成gunzip;
3.http报头添加gzip或deflate或gzip, deflate算法,然后对抓取的网页进行解压。
1和2都用过了,会出现抓取网页不全的现象,所以最好的办法还是第3种。
但是采用第3种方法,假如将文件保存成(写文件std::ofstream("a.txt")).txt(或者其他非压缩包格式),然后再将格式改为.gz,最后再用gzip.exe -d [压缩文件名/路径](如
E:\gzip.exe -d e:\test\sohu.txt)会出现unexpected end of file, corrupted data or a CRC error等各种莫名奇妙的错误),所以最好将文件保存成.gz或.zip或.tar等格式并且写文件必须以binary的形式进行写文件操作,std::ofstream("a.gz", std::ios::binary
------解决方案--------------------
std::ios::trunc)。
------解决方案--------------------
<meta content="text/html; charset=utf-8" http-equiv="content-type">
确认下你自己这边的解析问题!是不是按照utf-8的模式来的!
utf-8只能导致中文乱码,英文还是能显示的,但是对应上面的数据,显然英文也是乱码了
content-type我倒是看到和以前的网站不一样,他这个是这样子的:
这让我如何是好……
Content-Encoding :gzip
是不是要解压出来阿?
------解决方案--------------------
那不知道乱码,你解码的问题。
就是不知道怎么解gzip的,听说zlib可以,正在试……
这也不是你的问题。。。
HTTP Header里面你不设置gzip,server就不应该给你zip过的内容,那是server的问题。