UnicodeEncodeError: 'ascii' codec can't encode character u'\u2019' in position 38: ordinal not in range(128)
我正在下載一個網站,然後打印它的內容......簡單。 我需要以某種方式對它進行編碼嗎?當我嘗試在Putty中打印某些東西時,爲什麼會出現此錯誤?
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2019' in position 38: ordinal not in range(128)
我正在下載一個網站,然後打印它的內容......簡單。 我需要以某種方式對它進行編碼嗎?當我嘗試在Putty中打印某些東西時,爲什麼會出現此錯誤?
嘗試使用utf-8來啓動。您下載的網站可能具有與ANSI不同的字符集,並且這些額外字符無法在控制檯上打印。
所以在你做的地方print text
做print text.encode('utf-8')
來代替。
確保您將Putty配置爲接受UTF-8編碼數據。
print
因爲Python通常不知道系統正在使用什麼字符編碼,所以標準輸出的東西可能會有問題。面對這個,Python 2假設了最保守的選擇,即US ASCII。所以當你試圖打印一個包含字符的字符串不是ASCII的時候,比如U + 2019智能報價’
,它會給你這個錯誤。
在Python 3中,sys.stdout.encoding
的默認字符集猜測是UTF-8。如果你確信你的標準輸出(即膩子你的情況)應該接受UTF-8,然後是你可以明確地對其進行編碼:
print content.encode('UTF-8')
嗨,它目前是UTF-8,但仍然不工作。 – TIMEX 2009-10-29 11:25:31