gzip编码的响应不解码

时间:2015-09-08 11:03:59

标签: php apache encoding gzip

我在php中使用gzip编码:

ob_start("ob_gzhandler");
echo json_encode($arr);
ob_end_flush();

它在我的OpenServer本地工作,但上传到生产它不会被浏览器解码。

我得到了

‹мќ]s›8Зї ГЕs±"... 

而不是json对象。哪里可以成为问题?

Prod标题:

Server: nginx/1.2.6
Date: Tue, 08 Sep 2015 11:30:56 GMT
Content-Type: text/html; charset=WINDOWS-1251
Content-Length: 3661
Connection: keep-alive
X-Powered-By: PHP/5.2.17
Content-Encoding: gzip
Vary: Accept-Encoding

本地标题:

Connection:Keep-Alive
Content-Encoding:gzip
Content-Length:4066
Content-Type:text/html
Date:Tue, 08 Sep 2015 11:30:57 GMT
Keep-Alive:timeout=10, max=100
Server:Apache/2.2.27 (Win32)
Vary:Accept-Encoding

1 个答案:

答案 0 :(得分:0)

我不知道你的确切问题是什么;但是,您可能需要考虑使用gzencode

echo gzencode(json_encode($arr));

这里不需要输出缓冲。

如果您要将结果直接发送到浏览器,请不要忘记设置正确的标题。如果你的浏览器仍然显示垃圾,你应该检查Firebug或DevTools之类的东西,如果标题是真的设置的。