TIdHttpを使用してWebコンテンツをフェッチします。応答ヘッダーは、コンテンツエンコーディングがutf8であることを示します。コンソールでコンテンツをCP936(簡体字中国語)として印刷したいのですが、実際のコンテンツが読み取れません。
Result := TEncoding.Utf8.GetString(ResponseBuffer);
私はPythonで(httplib2を使用して)同じことを問題なく行います。
def python_try():
conn = httplib2.HttpConn()
respose, content = conn.get(...)
print content.decode('utf8') # readable in console
更新1
生の応答をデバッグしたところ、コンテンツがgzipで圧縮されていることがわかりました。
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
IdCompressorZLibインスタンスをIdHttpインスタンスに割り当てようとしました。残念ながら、gzip圧縮されたコンテンツを解凍しているときにアプリケーションがクラッシュします。テストアドレスは「http\://www.baidu.com」(encoding = gb2312)です。
更新2
また、ASCII文字のみを含むgzip圧縮されたjqueryスクリプトファイルをダウンロードしようとしました。今回は動作します。これは、Indyライブラリの問題であることを意味します。私が間違っていなかったら、質問を閉じなければなりません。