Подтвердить что ты не робот

UnicodeEncodeError при перенаправлении stdout

У меня проблема с Unicode в Python. Я могу печатать выходные данные в обычном терминале, но если я перенаправляю stdout в другое место (или фиксирую его с помощью модуля subprocess), я получаю a UnicodeEncodeError:

$ cat example.py 
print u'Example: \u00F1'
$ python example.py 
Example: ñ
$ python example.py > /dev/null
Traceback (most recent call last):
  File "example.py", line 1, in <module>
    print u'Example: \u00F1'
UnicodeEncodeError: 'ascii' codec can't encode character u'\xf1' in position 9: ordinal not in range(128)

Почему это? Как я могу это исправить?

4b9b3361

Ответ 1

Трубы, которые не приводят к терминалу, не имеют кодировки, поэтому вам нужно будет проверить sys.stdout.isatty() и закодировать при необходимости.