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 に答える