PHP:这些是什么编码???

刘凯叁 发布于 2013/05/22 21:06
阅读 1K+
收藏 1
PHP

Serverless 架构就不要服务器了?>>>

�MQ]o�0�/~N�8M��?���M�\;���j�D����cb�6��!�^���5M�>��N:��>�:���s�PD�Qx�H�T)"�Z���}����C����~Y-絛��7W��ի���w� e���Fa[(b��2�F8���;�NĥL�h貐*�9E!�-��E8)�-�3)yK�q\�D3)P(J�M�(bT�{�iNR�� ��dP�3&4}�P�i���Ƅ)�E9���2�2�|w`2I�]�#"T��cMt���!��a&�Lq�G�)�Y�T�0����eZ�a������I7���c��=�a������ߡ8��\<pF��~`��#�}�� ����LP��&��0p�6�(�dD��~���")��*C�k�Ĕ@��R�@��6
0�B�#㲝�x�Q>���}�Y�T�o��'���vq��Zl�����p��9߮�w����y=?����!X| �1������3�F���2۬)�tB��������?�ı���O,��1


这些是什么编码??是一个请求回传的 Content-Type: application/x-gzip;charset=UTF-8\r\n ,该怎么解码??


==================


$post_url = "http://AAA.com/users/nearlist_2_4";
$agent = "Dalvik/1.4.0 (Linux; U; Android 2.3.4; GT-N7000 Build/GRJ22)";


$post_data = "signiture=gR0SMsqPX6Zk3jaB%2BtW4sDF01xs%3D&key=db8a7c2d0113461200004001d63847bf&lat=39935098&lng=116392411&gender=m&logintime=15&pageno=1&pagesize=24";


$ch = curl_init ( $post_url );
curl_setopt ($ch, CURLOPT_USERAGENT,$agent);
curl_setopt ( $ch, CURLOPT_POST, 1 );
curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );
//curl_setopt ( $ch, CURLOPT_ENCODING, 'gzip' );
$contents = curl_exec ( $ch );
curl_close ( $ch );
echo $contents;

我始终得不到正确编码???我指定不接受gzip,好像还是乱码。

以下是问题补充:

@刘凯叁:返回头信息是: HTTP/1.1 200 OK Server: nginx Date: Wed, 22 May 2013 11:17:28 GMT Content-Type: application/x-gzip;charset=UTF-8 Connection: keep-alive Pragma: No-cache Cache-Control: no-cache Expires: Thu, 01 Jan 1970 00:00:00 GMT Content-Length: 119 (2013/05/22 21:15)
加载中
0
南湖船老大
南湖船老大

application/x-gzip

二进制嘛,你当文本来显示,当然是乱码了

帖子列表
帖子列表
回复 @刘凯叁 : 既然是gzip压缩的,试试看用tar解码,前提是把输出流写进文件里,我想应该行
刘凯叁
刘凯叁
?那怎样解码呢,我用过几种网上的方法 比如 gzinflate(substr($contents,10)); 这种不能解码哦
0
南湖船老大
南湖船老大

用PHP读取的话,很简单搞定

$content = file_get_contents("compress.zlib://".$url);

清朦
清朦
回复 @刘凯叁 : curl模拟提交POST,把返回数据这样处理一下就是了。
帖子列表
帖子列表
学习了
刘凯叁
刘凯叁
这个可以用get吧,但是 post 的请求要提交参数怎么办呢?
0
南湖船老大
南湖船老大
file_get_contents不是只能用于GET的,照样可用于POST请求,很简单
$data = array('signiture' => 'U1XI8EouJk7SfIaIwgLLZkq8Z%2FM%3D', 'key' => 'db8a7c2d0113461200004001d63847bf','userid'=>'11201879');
$data = http_build_query($data);
$opts = array(
    'http' => array(
        'method' => 'POST',
        'header' => "Content-type: application/x-www-form-urlencoded\r\n" .
        "Content-Length: " . strlen($data) . "\r\n",
        'content' => $data)
);
$context = stream_context_create($opts);
$ret = file_get_contents('compress.zlib://http://biz.iaround.com/user/info/basic/', false, $context);
echo $ret;
要解决这个需求太简单了,用curl也可以搞定
南湖船老大
南湖船老大
回复 @刘凯叁 : curl_setopt ( $ch, CURLOPT_ENCODING, 'gzip' );是指定GZIP啊,应该没问题
刘凯叁
刘凯叁
麻烦你在看一下,看得出来你是大牛,我更新了一下问题,把具体的需求写了出来。
帖子列表
帖子列表
膜拜大神啊!
0
南湖船老大
南湖船老大

    还有一种简单的办法,POST的时候明确地在Accept头里说”服务器大哥,你好,我这个客户端太老土了,不接受GZIP压缩,你就别压缩了呗“,服务器看到你不接受,就不会GZIP了。(这个不一定管用,因为现在的浏览器没有不支持GZIP的,服务器可能不会搭理你的要求)

你指定了不接受GZIP,但服务器不理你,你就迁就服务器

curl_setopt($curl, CURLOPT_ENCODING, "gzip");
刘凯叁
刘凯叁
回复 @阿尔法兽 : 是啊,我怕也是加密了
南湖船老大
南湖船老大
回复 @刘凯叁 : 我去那个网站首页看了,貌似是手机应用上的,PHP只是起了个传输数据的功能。是不是手机客户端还有其他处理呢
刘凯叁
刘凯叁
回复 @阿尔法兽 : 我用的tcpdump抓的,然后用wireshack看的,没有显示返回内容,只是content-length。
南湖船老大
南湖船老大
回复 @刘凯叁 : 或许客户端还有一层处理
南湖船老大
南湖船老大
回复 @刘凯叁 : 嗯,我试了下还是乱码。但乱码的看起来不像是gzip导致的,估计还有其他因素。你用fiddler抓包试试
下一页
返回顶部
顶部