4
4

1 に答える 1

1

例外が出力され、Unicode メッセージが与えられると、Python は によって返されたエンコーディングを使用してそれをエンコードしようとしsys.getdefaultencoding()ます。失敗すると、エンコーディング エラーが抑制され、奇妙な出力が得られます。

印刷の場合、Unicode 文字列はsys.stdout.encoding. sys.stderr.encodingええ、 excepthookを使用した方が良いでしょうsys.getdefaultencoding()

以下が機能することに注意してください。

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

sitecustomizeまたはusercustomizeを呼び出して、デフォルトのエンコーディングを変更することもできますsys.setdefaultencoding(your_encoding)。デフォルトsys.stderr.encodingのエンコーディングが (および他の標準ストリームのエンコーディングと) 等しくなるように、システムを構成する必要があります。

また、この問題は Python 3 ではもう存在しません。

于 2015-10-28T22:49:09.073 に答える