2016-05-15 72 views
0

我在Python中遇到了一些Unicode錯誤,試圖打印一些字符串,並使用以下代碼從第二個項目符號中解答了大部分錯誤: UnicodeEncodeError: 'charmap' codec can't encode - character maps to <undefined>, print functionPython中列表對象的Unicode錯誤

# -*- coding: utf-8 -*- 
import sys 

print sys.stdout.encoding 
print u"Stöcker".encode(sys.stdout.encoding, errors='replace') 
print u"Стоескер".encode(sys.stdout.encoding, errors='replace') 

但是,我試圖在列表對象上使用它時出現錯誤。它給了我一個錯誤,列表中沒有屬性「編碼」。

有人有一個乾淨的解決方案來解決這個問題嗎?

任何幫助表示讚賞!

+3

應用'encode()'列出項目,而不是列表本身 – dm295

+2

請添加你得到的輸出(錯誤文本)和你的python版本。在這裏...... –

+0

_'''它給了我一個錯誤,表中沒有屬性「encode」。'''_這是因爲'list'沒有'encode'方法,這是[方法在'str'或'unicode'](https://docs.python.org/2/library/stdtypes.html#str.encode) –

回答

0

當您打印列表時,執行打印的例程將採用非字符串對象並調用它們的__str__方法將它們轉換爲字符串。但是您試圖調用非字符串對象的decode方法,並且非字符串對象沒有decode方法。

解決此問題的一種方法是將unicode函數應用於列表,然後調用結果字符串的decode方法。

print unicode([u"Stöcker", u"Стоескер"]).encode(
       sys.stdout.encoding, errors='replace') 

這應該適用於大多數對象。