如何避免对内容进行显式解码?
How can I avoid explicit decoding of content?
我明白 .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')
?毕竟,相关页面在 header.
中正确声明了其编码
您可以使用 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
正如您在问题中所说,您可以从 headers 中获取编码以避免 hard-coding 编码:
content = response.read().decode(response.headers.getparam('charset'))
我明白 .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')
?毕竟,相关页面在 header.
您可以使用 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
正如您在问题中所说,您可以从 headers 中获取编码以避免 hard-coding 编码:
content = response.read().decode(response.headers.getparam('charset'))