2013-02-28 14 views
0

我在閱讀沒有指定charset的網頁時遇到問題。它包含一些非ascii字符,例如歐元貨幣,我的瀏覽器能夠正常讀取它。 firefox,在頁面信息我可以看到使用的編碼是'ISO-8859-1'和渲染模式'怪癖模式'。如果U「\ X80」python-requests,找到正確的編碼

result = requests.get(url) 
result.encoding = 'ISO-8859-1' 
html = result.text 
open('textfile.txt', 'w').write(html) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
UnicodeEncodeError: 'ascii' codec can't encode character u'\x80' 

:不過,蟒蛇,請求不能真正想寫例如該字符串文本file.Example解碼時,這些非ASCII字符,我讓自己的錯誤應代表歐元貨幣'ISO-8859-1'編碼,這應該工作

print '\x80'.decode('ISO-8859-1') 

但我得到一個不可打印的字符,而不是歐元。那麼,該網頁如何在瀏覽器中工作,但請求(urllib/2)也無法處理該編碼?我也嘗試過'utf-8',但同樣的事情。有什麼建議麼?

回答

2

的問題是,真正的編碼是cp1252,就像你可以看到,如果你這樣做:

print '\x80'.decode('cp1252') 

此相關答案提供了更多的細節:

PHP function iconv character encoding from iso-8859-1 to utf-8

它不涉及蟒蛇,但它是同樣的問題,並給出了一些爲什麼發生這種情況的背景。

+0

謝謝!剛剛更改爲1252,它的工作原理。 – Zed 2013-02-28 23:50:12