Mi rispondo da solo dopo un lungo studio del protocollo http sperando di essere utile a qualcuno che si ritrovo lo stesso problema.

I caratteri strani non sono altro che il numero dei caratteri successivi nel caso si tratti di una risposta
che ha nell'header
Codice PHP:
Transfer-Encodingchunked 
Per decodificarla bisogna leggere la prima linea trasformare il codice esadecimale in intero leggere
il numero di caratteri successivi metterli nella risposta poi aspettarti un altra linea che identifica i caratteri successivi e cosi via fino a quando il numero di caratteri successivi diventa 0.

Ho analizzato lo Zend Framework per vedere come faceva ecco il metodo
Codice PHP:
   /**
    * @category   Zend
    * @package    Zend_Http
    * @subpackage Response
    * @version    $Id: Response.php 8064 2008-02-16 10:58:39Z thomas $
    * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. ([url]http://www.zend.com[/url])
    * @license    [url]http://framework.zend.com/license/new-bsd[/url]     New BSD License
    **/


    /**
     * Decode a "chunked" transfer-encoded body and return the decoded text
     *
     * @param string $body
     * @return string
     */
    
public static function decodeChunkedBody($body)
    {
        
$decBody '';
        
        while (
trim($body)) {
            if (! 
preg_match("/^([\da-fA-F]+)[^\r\n]*\r\n/sm"$body$m)) {
                require_once 
'Zend/Http/Exception.php';
                throw new 
Zend_Http_Exception("Error parsing body - doesn't seem to be a chunked message");
            }

            
$length hexdec(trim($m[1]));
            
$cut strlen($m[0]);

            
$decBody .= substr($body$cut$length);
            
$body substr($body$cut $length 2);
        }

        return 
$decBody;
    } 
comunque senza stare troppo a sbattersi si può utilizzare questa classe che può essere istanziata
passandogli la stringa in blocco della risposta http .