Python urllib2 またはその他の Python ライブラリを使用して、HTTP 応答の文字セット/エンコーディング情報を取得する簡単な方法を探しています。
>>> url = 'http://some.url.value'
>>> request = urllib2.Request(url)
>>> conn = urllib2.urlopen(request)
>>> response_encoding = ?
「Content-Type」ヘッダーに存在する場合があることは知っていますが、そのヘッダーには他の情報が含まれており、解析する必要がある文字列に埋め込まれています。たとえば、Google から返される Content-Type ヘッダーは次のとおりです。
>>> conn.headers.getheader('content-type')
'text/html; charset=utf-8'
私はそれで作業できますが、フォーマットがどの程度一貫しているかはわかりません。文字セットが完全に欠落している可能性があると確信しているので、そのエッジケースを処理する必要があります。「utf-8」を取得するためのある種の文字列分割操作は、この種のことを行うには間違った方法でなければならないようです。
>>> content_type_header = conn.headers.getheader('content-type')
>>> if '=' in content_type_header:
>>> charset = content_type_header.split('=')[1]
それは、あまりにも多くの作業を行っているように感じる種類のコードです。また、すべての場合に機能するかどうかもわかりません。誰かがこれを行うためのより良い方法を持っていますか?