我想在python 2.7中使用urllib2從網頁中獲取一個頁面。該頁面恰好以unicode(UTF-8)編碼,並具有希臘字符。當我嘗試使用下面的代碼獲取並打印它時,我得到的不是希臘字符而是胡言亂語。蟒蛇urllib2解碼問題
import urllib2
print urllib2.urlopen("http://www.pamestihima.gr").read()
結果在Netbeans 6.9.1和Windows 7 CLI中都是一樣的。
我做錯了什麼,但什麼?
我想在python 2.7中使用urllib2從網頁中獲取一個頁面。該頁面恰好以unicode(UTF-8)編碼,並具有希臘字符。當我嘗試使用下面的代碼獲取並打印它時,我得到的不是希臘字符而是胡言亂語。蟒蛇urllib2解碼問題
import urllib2
print urllib2.urlopen("http://www.pamestihima.gr").read()
結果在Netbeans 6.9.1和Windows 7 CLI中都是一樣的。
我做錯了什麼,但什麼?
它也適合我打印。
檢查您正在查看HTML源代碼的程序的字符編碼。例如,在Linux終端中,您可以找到「設置字符編碼」並確保它是UTF-8。
Unicode是不 UTF-8。 UTF-8編碼字符串,如ISO-8859-1,ASCII等
始終解碼您的數據,儘快使實際的Unicode出來。 ('somestring in utf8'.decode('utf-8') == u'somestring in utf-8'
),Unicode對象是u''
,不''
當你有數據離開你的應用程序,總是編碼它在正確的編碼。對於網絡的東西,這主要是utf-8
。對於控制檯的東西,無論您的控制檯編碼是什麼。在Windows上,默認情況下,這是而不是 UTF-8。
你的Python代碼打印正確的希臘字符給我。 – eumiro 2010-11-16 15:25:19
您的控制檯未設置爲打印Unicode(可能未設置爲處理UTF-8)。搜索「Python打印Unicode字符」,因爲這是你真正的問題。 – 2010-11-16 15:39:38
print urllib2.urlopen(「http://www.pamestihima.gr」).read()。encode(「utf-8」) – 2010-11-16 16:12:18