PHP文件获取内容和字符串编码

Mat*_*uyn 1 php utf-8 character-encoding

检索到css文件的内容:(http://gizmodo.com/assets/stylesheets/app-ecbc6044c59319aab4c2a1e31380ef56.css)

mb_detect_encoding... 检测编码说UTF-8.

在浏览器中查看该页面,看起来很好(可读),并声明 @charset "UTF-8";

试图输出字符串,得到垃圾.试图将它保存到文件,得到垃圾.

试图将编码转换为ASCII,ISO-8859-1和HTML-ENTITIES.没运气.

这里的任何想法如何确定为什么这个字符串是垃圾,以及如何解决它?

Mr.*_*ama 5

Content-Encoding你想抓取网页的是gzip.在使用之前,您需要解压缩它.

注意Content-Encoding

我只是尝试了以下,它工作正常:

echo gzdecode(file_get_contents($your_url));
Run Code Online (Sandbox Code Playgroud)

  • 他的答案更"正确",而我的答案更像是黑客/演示.我也会选择他的. (2认同)

Cos*_*ech 5

$url = 'http://gizmodo.com/assets/stylesheets/app-ecbc6044c59319aab4c2a1e31380ef56.css';

$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($ch,CURLOPT_ENCODING , "gzip");
$data = curl_exec($ch);
curl_close($ch);
echo $data;
Run Code Online (Sandbox Code Playgroud)

重要的是

curl_setopt($ch,CURLOPT_ENCODING , "gzip");
Run Code Online (Sandbox Code Playgroud)