Falha ao decodificar o conteúdo da resposta usando o IdHttp
Eu uso o TIdHttp para buscar o conteúdo da web. O cabeçalho de resposta indica a codificação de conteúdo para ser utf8. Quero imprimir conteúdo no console como CP936 (chinês simplificado), mas o conteúdo real não é legível.
Result := TEncoding.Utf8.GetString(ResponseBuffer);
Eu faço a mesma coisa em python (usando httplib2) sem problemas.
def python_try():
conn = httplib2.HttpConn()
respose, content = conn.get(...)
print content.decode('utf8') # readable in console
ATUALIZAÇÃO 1
Depurei a resposta bruta e notei que o conteúdo é gzipado.
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
Eu tentei atribuir uma instância IdCompressorZLib à instância IdHttp. Infelizmente, o aplicativo irá travar ao descompactar o conteúdo do gzip. O endereço de teste é "http \: //www.baidu.com" (encoding = gb2312).
ATUALIZAÇÃO 2
Eu também tentei baixar um arquivo de script gzipped jquery, que contém apenas caracteres ascii. Desta vez funciona, o que significa ser um problema da biblioteca Indy. Se eu não estivesse errado, deveria fechar a questão.