Un bon moyen d'obtenir le jeu de caractères/de codage d'une réponse HTTP en Python

La recherche d'un moyen facile d'obtenir le jeu de caractères/de codage de l'information d'une réponse HTTP à l'aide de Python urllib2, ou de toute autre bibliothèque Python.

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

Je sais que c'est parfois présent dans le "Content-Type" de la tête, mais que la tête a d'autres informations, et il est intégré dans une chaîne que j'aurais besoin de l'analyser. Par exemple, le Contenu de l'en-tête de Type retourné par Google est

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

Je pouvais travailler avec cela, mais je ne suis pas sûr de la façon cohérente le format sera. Je suis sûr que c'est possible pour le jeu de caractères à être totalement absente, alors j'aimerais avoir à gérer ce cas de bord. Une sorte de chaîne de l'opération de fractionnement pour obtenir le 'utf-8' de l', il semble comme il est à la mauvaise manière de faire ce genre de chose.

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

C'est le genre de code qui se sent comme il fait trop de travail. Je suis également pas sûr si cela ne fonctionne pas dans tous les cas. Quelqu'un aurait-il une meilleure façon de le faire?

InformationsquelleAutor Clay Wardell | 2013-01-29