HTTPの応答を受け取って内容を解析するコードをつくっていたのだけど、
HTTP通信は全てテキスト形式だと思っていたら罠があった。
HTTP1.1は、BODY部がgzip圧縮されてくることがある!
圧縮、非圧縮を判定するキーはHEADER部のContent-Encodingにある。
Content-Encoding: gzip
などとなっていたら、BODY部は圧縮されている。
gzip以外に、x-gzipとかdeflateとか書かれてることもある。
その場合は、BODY部をzlibなどで展開する必要がある。
HTTP1.1対応のブラウザは暗黙にこれをやってるんですね。
(IEやFirefoxはHTTP1.1を拒否する設定もできる)