问题

当我尝试在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