2016-03-03 66 views
1

據我所知,.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')?畢竟,有問題的頁面在頭文件中正確地聲明瞭它的編碼。

回答

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 
0

正如你在你的問題,你可以從報頭得到的編碼,以避免硬編碼的編碼:

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

我喜歡最小的API,但是這使得urllib2成爲一個相當不完整的API。 – Calaf