注意:这个答案有点过时(从2008年开始)。请小心使用以下解决方案!!
这是一个详细说明问题的页面和解决方案(在页面中搜索将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
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
2
Б
Б
有关该页面的更多信息,非常值得一读。