2012-04-27 63 views
0

我使用python接收不同編碼的網絡響應,並在網頁上給出我的預期產出應該有相同的如何保持編碼字符是

例:馬克·巴比

最後一個字符應解析html響應後保持不變。

目前我使用下面的代碼爲這個

unicode.join(u'\n',map(unicode,item)) 

在某些情況下,當沒有特殊編碼,給它拋出以下錯誤: 例:馬庫斯Rygaard,Alberte Blichfeldt,弗萊明奎斯特,穆勒

Traceback (most recent call last): 
    File "BFICrawl.py", line 20, in <module> 
    print attrName + " : " + attrValue 
    File "C:\Python27\LIB\encodings\cp437.py", line 12, in encode 
    return codecs.charmap_encode(input,errors,encoding_map) 
UnicodeEncodeError: 'charmap' codec can't encode character u'\xf8' in position 6 
0: character maps to <undefined> 

我真的無法找到相同的原因。有沒有其他的方法可以從網頁獲取相同的編碼內容。

+0

請發表您的操作系統和版本,因爲這也可能取決於你在運行的終端和操作系統上。 – snies 2012-04-27 21:39:55

回答

1

您已成功從網絡獲取unicode對象。你不應該需要做像unicode.join(u'\n',map(unicode,item))這樣的事情。當您嘗試輸出unicode時,問題就會發生。

您正在Windows「命令提示符」窗口中運行您的腳本。該腳本正在打印到控制檯。控制檯編碼是cp437。這是一個非常有限的(8位)編碼。它無法處理Møller中的第二個字符以及其他大量字符

補救措施:在IDLE(隨Python提供)或其他IDE中運行腳本。

另外,如果要打印到控制檯的調試,僅供參考,而不是print foo使用print repr(foo)

+0

任何人都有什麼想法,爲什麼幽靈匿名駕車由Downvoter不喜歡我的答案? – 2012-04-28 21:02:15

+0

不知道,因爲我認爲這是一個體面的答案。 + 1ing。 – 2012-04-30 00:04:01

1

Codepage 437(正在編碼爲)不知道ø字符,因此您的字符串不能編碼輸出。錯誤消息確實說明了這一切。

所以問題是:你爲什麼試圖將字符串編碼到DOS控制檯窗口使用的代碼頁?

+0

他不(有意識地)試圖做到這一點。 – 2012-04-27 22:22:31

相關問題