Eine gute Möglichkeit, den Zeichensatz / die Codierung einer HTTP-Antwort in Python abzurufen

Suchen Sie nach einer einfachen Möglichkeit, die Zeichensatz- / Codierungsinformationen einer HTTP-Antwort mit Python urllib2 oder einer anderen Python-Bibliothek abzurufen.

>>> url = 'http://some.url.value'
>>> request = urllib2.Request(url)
>>> conn = urllib2.urlopen(request)
>>> response_encoding = ?

Ich weiß, dass es manchmal im 'Content-Type'-Header vorhanden ist, aber dieser Header enthält andere Informationen und ist in eine Zeichenfolge eingebettet, die ich analysieren müsste. Der von Google zurückgegebene Content-Type-Header lautet beispielsweise

>>> conn.headers.getheader('content-type')
'text/html; charset=utf-8'

Ich könnte damit arbeiten, bin mir aber nicht sicher, wie konsistent das Format sein wird. Ich bin mir ziemlich sicher, dass der Zeichensatz möglicherweise komplett fehlt, also müsste ich mich um diesen Randfall kümmern. Eine Art von String-Split-Operation, um das 'utf-8' herauszuholen, scheint der falsche Weg zu sein, um so etwas zu tun.

>>> content_type_header = conn.headers.getheader('content-type')
>>> if '=' in content_type_header:
>>>  charset = content_type_header.split('=')[1]

Das ist die Art von Code, die zu viel Arbeit macht. Ich bin mir auch nicht sicher, ob es in jedem Fall funktionieren wird. Hat jemand einen besseren Weg, dies zu tun?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage