Error al descifrar el contenido de la respuesta usando IdHttp
Yo uso TIdHttp para recuperar contenido web. El encabezado de respuesta indica que la codificación del contenido debe ser utf8. Quiero imprimir contenido en la consola como CP936 (chino simplificado), pero el contenido real no es legible.
Result := TEncoding.Utf8.GetString(ResponseBuffer);
Hago lo mismo en python (usando httplib2) sin ningún problema.
def python_try():
conn = httplib2.HttpConn()
respose, content = conn.get(...)
print content.decode('utf8') # readable in console
ACTUALIZACIÓN 1
Depuré la respuesta sin procesar y noté que el contenido está comprimido.
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=UTF-8
Transfer-Encoding: chunked
Content-Encoding: gzip
Vary: Accept-Encoding
Date: Mon, 24 Dec 2012 15:27:44 GMT
Connection: Keep-Alive
Intenté asignar una instancia IdCompressorZLib a la instancia IdHttp. Desafortunadamente, la aplicación se bloqueará mientras descomprime el contenido comprimido. La dirección de prueba es "http \: //www.baidu.com" (codificación = gb2312).
ACTUALIZACIÓN 2
También intenté descargar un archivo de script jquery gzipped, que contiene solo caracteres ascii. Esta vez funciona, lo que significa ser un problema de la biblioteca de Indy. Si no estuviera equivocado, debería cerrar la pregunta.