我在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
答案 0 :(得分:0)
我不知道你的确切问题是什么;但是,您可能需要考虑使用gzencode
:
echo gzencode(json_encode($arr));
这里不需要输出缓冲。
如果您要将结果直接发送到浏览器,请不要忘记设置正确的标题。如果你的浏览器仍然显示垃圾,你应该检查Firebug或DevTools之类的东西,如果标题是真的设置的。