我知道.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')
?毕竟,有问题的页面正确地在标题中声明了它的编码。
答案 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'))