Если программа командной строки не уверена в кодировке stdout, какую кодировку она должна выводить? - PullRequest
7 голосов
/ 16 февраля 2011

У меня есть программа командной строки, написанная на Python, и когда я передаю ее через другую программу в командной строке, sys.stdout.encoding равен None. Полагаю, это имеет смысл - вывод может быть другой программой, файлом, в который вы перенаправляете его, или чем-то еще, и он не знает, какая кодировка желательна. Но я тоже! Эта программа будет использоваться многими разными людьми (юмор меня) по-разному. Должен ли я играть безопасно и выводить только ascii (заменяя символы не-ascii знаками вопроса)? Или я должен вывести UTF-8, так как он так широко распространен в наши дни?

Ответы [ 4 ]

7 голосов
/ 16 февраля 2011

Я предлагаю вам использовать текущую локаль.

Python2> import locale
Python2> locale.getpreferredencoding()
'UTF-8'

Система знает, каким она должна быть, и другая сторона, если она также использует текущую локаль, будет делать правильные вещи.

4 голосов
/ 16 февраля 2011

Вы должны использовать значение, возвращаемое locale.getpreferredencoding().

1 голос
/ 16 февраля 2011

, если ваше приложение на самом деле не имеет дело с большой интернационализацией, ascii должно быть достаточно.но если нет, я бы сказал, utf-8 или, что еще лучше, utf-16 должно быть в порядке дня.

0 голосов
/ 16 февраля 2011

Вы должны вывести UTF-8, потому что это то, что все должны использовать. Это ошибка, чтобы не быть. ;)

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