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

时间:2013-07-17 20:46:10

标签: 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。没有运气。

这里有什么想法如何确定这个字符串为什么是垃圾,以及如何修复它?

2 个答案:

答案 0 :(得分:5)

您尝试提取的网页的Content-Encodinggzip。在使用之前,您需要uncompress

Notice the Content-Encoding

我刚刚尝试了以下内容并且工作正常:

echo gzdecode(file_get_contents($your_url));

答案 1 :(得分: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;

重要的一行是

curl_setopt($ch,CURLOPT_ENCODING , "gzip");