我使用 TIdHttp 来获取网页内容。响应头指示内容编码为 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
我调试了原始响应并注意到内容被压缩了。
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”(编码=gb2312)。
更新 2
我还尝试下载一个 gzipped jquery 脚本文件,它只包含 ascii 字符。这次成功了,这意味着是Indy库的问题。如果我没有错,我应该关闭这个问题。