Python,Unicode和Windows控制臺當(dāng)我嘗試在Windows控制臺中打印Unicode字符串時,出現(xiàn)UnicodeEncodeError: 'charmap' codec can't encode character ....錯誤。我認(rèn)為這是因為Windows控制臺不接受僅Unicode字符。最好的方法是什么??在這種情況下,有什么方法可以讓Python自動打印而不是失???編輯: 我正在使用Python 2.5。
4 回答

婷婷同學(xué)_
TA貢獻(xiàn)1844條經(jīng)驗 獲得超8個贊
注意:這個答案有點過時(從2008年開始)。請小心使用以下解決方案!!
這是一個詳細(xì)說明問題的頁面和解決方案(在頁面中搜索將sys.stdout包裝到實例中的文本):
這是該頁面的代碼摘錄:
$ python -c 'import sys, codecs, locale; print sys.stdout.encoding; \ sys.stdout = codecs.getwriter(locale.getpreferredencoding())(sys.stdout); \ line = u"\u0411\n"; print type(line), len(line); \ sys.stdout.write(line); print line' UTF-8 <type 'unicode'> 2 Б Б $ python -c 'import sys, codecs, locale; print sys.stdout.encoding; \ sys.stdout = codecs.getwriter(locale.getpreferredencoding())(sys.stdout); \ line = u"\u0411\n"; print type(line), len(line); \ sys.stdout.write(line); print line' | cat None <type 'unicode'> 2 Б Б
有關(guān)該頁面的更多信息,非常值得一讀。

梵蒂岡之花
TA貢獻(xiàn)1900條經(jīng)驗 獲得超5個贊
如果你對獲得可靠的壞字符表示不感興趣,可以使用類似的東西(使用python> = 2.6,包括3.x):
from __future__ import print_functionimport sysdef safeprint(s): try: print(s) except UnicodeEncodeError: if sys.version_info >= (3,): print(s.encode('utf8').decode(sys.stdout.encoding)) else: print(s.encode('utf8'))safeprint(u"\N{EM DASH}")
字符串中的錯誤字符將以Windows控制臺可打印的表示形式進(jìn)行轉(zhuǎn)換。
添加回答
舉報
0/150
提交
取消