Странное поведение при печати на Python с использованием Unicode - PullRequest
2 голосов
/ 10 августа 2011

Мне интересно, почему я могу использовать print для печати строки Unicode в моем OSX Terminal.app, но если я перенаправлю stdout в файл или передам его 'more', я получу UnicodeEncodeError.Как python решает, печатать ли он в юникоде или выдает исключение.

1 Ответ

2 голосов
/ 10 августа 2011

Поскольку кодировка вашего терминала установлена ​​правильно, и когда вы перенаправляете в файл (или канал), кодировка устанавливается на кодировку по умолчанию (ASCII в python2.), Попробуйте print sys.stdout.encoding в оба раза (когда вы запускаете свой скрипт кактерминал, как стандартный вывод, и когда вы перенаправите в файл), и вы увидите разницу.

Попробуйте также в командной строке:

$ python -c 'import sys; print sys.stdout.encoding;'
UTF8
$ python -c 'import sys; print sys.stdout.encoding;' | cat
None

Более подробную информацию можно найти ЗДЕСЬ :

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...