4
4

1 回答 1

1

当要打印异常并给出 Unicode 消息时,Python 会尝试使用sys.getdefaultencoding(). 如果它失败了,编码错误就会被抑制,你会得到奇怪的输出。

在打印情况下,Unicode 字符串使用sys.stdout.encoding. 是的,如果使用 excepthooksys.stderr.encoding而不是sys.getdefaultencoding().

请注意,以下工作。

raise LookupError(u"symbol: \u0411".encode(your_encoding))

您还可以通过调用更改sitecustomize或更改默认编码。您的系统应配置为默认编码等于(以及其他标准流的编码)。usercustomizesys.setdefaultencoding(your_encoding)sys.stderr.encoding

此外,这个问题在 Python 3 中不再存在。

于 2015-10-28T22:49:09.073 回答