要解析http标头,您可以使用
cgi.parse_header():
_, params = cgi.parse_header('text/html; charset=utf-8')print params['charset'] # -> utf-8或使用响应对象:
response = urllib2.urlopen('http://example.com')response_encoding = response.headers.getparam('charset')# or in Python 3: response.headers.get_content_charset(default)通常,服务器可能会说谎或根本不报告编码(默认取决于内容类型),或者可能在响应正文中指定编码,例如
<meta>html文档中的元素或xml文档的xml声明中的元素。作为最后的选择,可以从内容本身猜测编码。
您可以
requests用来获取Unipre文本:
import requests # pip install requestsr = requests.get(url)unipre_str = r.text # may use `chardet` to auto-detect encoding
或
BeautifulSoup解析html(并转换为Unipre作为副作用):
from bs4 import BeautifulSoup # pip install beautifulsoup4soup = BeautifulSoup(urllib2.urlopen(url)) # may use `cchardet` for speed# ...
或
bs4.UnipreDammit直接获取任意内容(不一定是html):
from bs4 import UnipreDammitdammit = UnipreDammit(b"Sacrxc3xa9 bleu!")print(dammit.unipre_markup)# -> Sacré bleu!print(dammit.original_encoding)# -> utf-8



