Fehler beim Dekodieren des Antwortinhalts mit IdHttp
Ich benutze TIdHttp, um Webinhalte abzurufen. Der Antwortheader gibt die Inhaltskodierung als utf8 an. Ich möchte Inhalte in der Konsole als CP936 (vereinfachtes Chinesisch) drucken, aber der tatsächliche Inhalt ist nicht lesbar.
Result := TEncoding.Utf8.GetString(ResponseBuffer);
Ich mache dasselbe in Python (mit httplib2) ohne Probleme.
def python_try():
conn = httplib2.HttpConn()
respose, content = conn.get(...)
print content.decode('utf8') # readable in console
UPDATE 1
Ich habe die unformatierte Antwort getestet und festgestellt, dass der Inhalt gezippt ist.
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
Ich habe versucht, der IdHttp-Instanz eine IdCompressorZLib-Instanz zuzuweisen. Leider stürzt die Anwendung beim Dekomprimieren von komprimiertem Inhalt ab. Die Testadresse lautet "http \: //www.baidu.com" (encoding = gb2312).
UPDATE 2
Ich habe auch versucht, eine gzippte jquery-Skriptdatei herunterzuladen, die nur ASCII-Zeichen enthält. Diesmal funktioniert es, was bedeutet, ein Problem der Indy-Bibliothek zu sein. Wenn ich mich nicht irre, sollte ich die Frage schließen.