python和unicode stderr

fan*_*ero 2 python unicode stderr

我使用匿名管道来捕获所有stdout,然后stderr打印成一个richedit,当我使用wsprintf时它没关系,但使用多字节char的python真的让我恼火.如何将所有这些输出转换为unicode?

更新2010-01-03:

谢谢你的回复,但它似乎str.encode()唯一适用的print xxx东西,如果在期间有错误py_runxxx(),我的重定向stderr将捕获多字节字符串中的错误消息,所以有没有办法可以使python以unicode方式输出它的消息?在这篇文章中似乎有一个可用的解决方案.

我稍后再试.

sor*_*rin 9

首先,请记住,在Windows控制台上可能不完全支持Unicode.

下面的例子确实使蟒输出到stderrstdout使用UTF-8 .如果您愿意,可以将其更改为其他编码.

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import codecs, sys

reload(sys)
sys.setdefaultencoding('utf-8')

print sys.getdefaultencoding()

sys.stdout = codecs.getwriter('utf8')(sys.stdout)
sys.stderr = codecs.getwriter('utf8')(sys.stderr)

print "This is an ???mp?? testing Unicode support using Arabic, Latin, Cyrillic, Greek, Hebrew and CJK code points."
Run Code Online (Sandbox Code Playgroud)