如何避免显式解码内容?

时间:2016-03-03 21:33:10

标签: python unicode urllib2

我知道.encode('utf-8')是必要的。

# -*- coding: utf-8 -*-
import urllib2
url = u'https://fr.wikipedia.org/wiki/Nîmes'
response = urllib2.urlopen(url.encode('utf-8'))
content = response.read().decode('utf-8')
print type(content)

但我如何避免.decode('utf-8')?毕竟,有问题的页面正确地在标题中声明了它的编码。

2 个答案:

答案 0 :(得分:1)

您可以使用requests

# -*- coding: utf-8 -*-

import requests
url = u'https://fr.wikipedia.org/wiki/Nîmes'
response = requests.get(url)
content = response.content
text = response.text
assert type(content) == str
assert type(text) == unicode

答案 1 :(得分:0)

正如您在问题中所说,您可以从标头中获取编码,以避免对编码进行硬编码:

content = response.read().decode(response.headers.getparam('charset'))