問題

當我嘗試在Windows控制檯中列印Unicode字串時,我收到UnicodeEncodeError: 'charmap' codec can't encode character ....錯誤.我假設這是因為Windows控制檯不接受Unicode-only字元.最好的方法是什麼?有沒有辦法讓Python自動列印?而不是在這種情況下失敗?

編輯:我正在使用Python 2.5.


注意:@LasseV.Karlsen answer with checkmark有點過時(從2008年開始).請謹慎使用下面的解決方案/答案/建議!

@JFSebastian answer 與今天(2016年1月6日)更相關.

  最佳答案

注意:這個答案有點過時(從2008年開始).請謹慎使用以下解決方案!


這是一個詳細說明問題和解決方案的頁面(將文字Wrapping sys.stdout的頁面搜尋到例項中):

PrintFails – Python Wiki

這是該頁面的程式碼摘錄:

 $ python -c 'import sys, codecs, locale; print sys.stdout.encoding; \
    sys.stdout = codecs.getwriter(locale.getpreferredencoding())(sys.stdout); \
    line = u"\u0411
"; 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
"; print type(line), len(line); \
    sys.stdout.write(line); print line' | cat
  None
  <type 'unicode'> 2
  Б
  Б
 

這頁上有更多的資訊,值得一讀。

  相同標籤的其他問題

pythonunicode