各位大大,这个问题折腾我一下午了。抓取gb2312格式的网页时显示内容乱码,如果我直接把这个页面的uft-8修改成gb2312再抓取就显示正常,
求:在不修改本页面utf-8编码的情况下如何让抓取的gb2312页面不乱码。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php之curl抓取gb2312网页显示乱码</title> </head> <body><?php $url="http://www.jb51.net/article/27448.htm"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); //curl_setopt($curl, CURLOPT_HTTPHEADER,array('Accept-Encoding: gzip, deflate')); //curl_setopt($curl, CURLOPT_ENCODING,'gzip,deflate'); //这个是解释gzip内 //curl_setopt($ch, CURLOPT_ENCODING,'gzip'); //加入gzip解析 //curl_setopt($ch, CURLOPT_ENCODING, ""); // $resu = curl_exec($ch); //释放curl句柄 curl_close($ch);//关闭curl会话 echo $stu; ?> </body> </html>
你把uft-8格式的编码,用gb2312格式抓取,不乱码才怪,不如。。。。保存一个字符,你抓去的时候是。。。还是一个字符吗?
先弄明白为什么会乱码,
乱码是因为你在 UTF-8的界面上输出你取过的的 GB2313 字符串,
那么在输出前把取到的 GK2312 字符转换成UTF-8,就OK了