今天在用file_get_contents($url)获取一个url的json数据时发现,数据是乱码。全部是乱码
用浏览器直接访问这个url也是显示除了中文乱码,但是英文、字符、数字正常。
像下面那种,英文字母没有乱码,一般就是文字编码有问题。这里就是源数据是UTF-8字符集编码的,被页面以UTF-8字符集显示出来了,可以用php的iconv(‘utf-8’,‘gbk’,‘5鏃ユ槦鏈熸棩’)将数据转为gbk字符集的,就可以正常以gbk编码显示出来了。
而上面那种全部乱码的,就是因为数据被gzip压缩编码过的。解决方法有以下两种:
1、找个ungzip的函数来转换下
2、给你的url加个前缀,这样调用
a.$content = file_get_contents(“compress.zlib://”.$url);
b.//无论页面是否经过gzip压缩,上述代码都可以正常工作!
3、使用curl
function curl_get($url, $gzip=false){
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10);
if($gzip) curl_setopt($curl, CURLOPT_ENCODING, “gzip”); // 关键在这里
$content = curl_exec($curl);
curl_close($curl);
return $content;
}