環境変数LANGでUnicodeEncodeErrorををスロー:私は私のDebianシステム上でそれを実行すると、予想通りのPython 3は、私は次のPythonスクリプトを持っている= C
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
print('☺')
、それは、次の出力を生成します。
$ ./test.py
☺
$
$ LANG=C ./test.py
Traceback (most recent call last):
File "./test.py", line 4, in <module>
print('\u263a')
UnicodeEncodeError: 'ascii' codec can't encode character '\u263a' in position 0: ordinal not in range(128)
$
:私は「C」に、
LANG
環境変数を設定することにより、ロケールを変更しかし
は、スクリプトがUnicodeEncodeError
スロー0
この問題は、このスクリプトがブート中や組み込みシステムなどの最小限の環境で実行されないようにします。また、多くの既存のPythonプログラムは、LANG=C
で実行すると壊れる可能性があります。 "C"の場所で実行されたためにおそらく壊れたプログラムのStackoverflowにHere's an exampleがあります。
これはPythonのバグですか?これを防ぐ最善の方法は何ですか?
をfdに、適切にUnicodeをエンコードする適切な値に
LC_CTYPE
を設定、またはバイナリを作成する方法をお知りになりたい場合は、「これは、Pythonのバグですか?」 - PythonにWHITE SMILING FACEを持たないロケールで印刷するように指示しています。私はそれがPythonのせいだとは思わない。 – jwodder