PHP curl返回奇怪的字符

时间:2014-02-20 14:23:21

标签: php session curl encoding prestashop

我正在尝试使用Prestashop实例的图像产品更新页面。

我使用prestashop网络服务获取信息。 问题是,当我加载页面时,它会询问prestashop的令牌/密钥,但我想使用Url和我从CURL传递的密钥保存登录会话,而不是每次都输入密钥。 但是curl_exec的输出是一些奇怪的字符,例如��#B��R��$3br�

以下是保存会话的功能:

 function saveSession($url, $key){

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_USERPWD, $key.':');
    curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate,sdch');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    $result = curl_exec($ch);
    curl_close($ch);
    return $result;
 }

我不知道问题是编码,标题还是有其他解决方案!?

1 个答案:

答案 0 :(得分:24)

响应中的奇怪数据是curl无法检测到的压缩内容。

替换它:

curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate,sdch');

使用:

curl_setopt($ch, CURLOPT_ENCODING, '');

空编码意味着处理任何类型的编码。它应该解决你的问题。