Nie udało się zdekodować treści odpowiedzi za pomocą IdHttp
Używam TIdHttp do pobierania treści internetowych. Nagłówek odpowiedzi wskazuje, że kodowanie treści ma być utf8. Chcę drukować zawartość w konsoli jako CP936 (uproszczony język chiński), ale rzeczywista zawartość nie jest czytelna.
Result := TEncoding.Utf8.GetString(ResponseBuffer);
Robię to samo w pythonie (używając httplib2) bez żadnych problemów.
def python_try():
conn = httplib2.HttpConn()
respose, content = conn.get(...)
print content.decode('utf8') # readable in console
AKTUALIZACJA 1
Debugowałem surową odpowiedź i zauważyłem, że zawartość jest gzipowana.
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
Próbowałem przypisać instancję IdCompressorZLib do instancji IdHttp. Niestety aplikacja ulegnie awarii podczas dekompresji zawartości gzip. Adres testowy to „http: //www.baidu.com” (kodowanie = gb2312).
AKTUALIZACJA 2
Próbowałem także pobrać plik skryptu gzipped jquery, który zawiera tylko znaki ascii. Tym razem działa, co oznacza problem z biblioteką Indy. Gdybym się nie mylił, powinienem zamknąć pytanie.