Если скрипт вызывается через управление конфигурацией (в моем случае солт-стек), он завершается неудачно. Если вызывается через оболочку, это работает.

Я использовал инструмент dumpenv для различных сред.

Getfilesystemencoding () отличается:

dumpenv-getfilesystemencoding-differs

Переменные среды выглядят немного иначе:

dumpenv-os-environment-variables

Что заставляет getfilesystemencoding () быть неправильным с правой стороны?

Версия Python: 2.7

3
guettli 15 Авг 2019 в 14:25

2 ответа

Лучший ответ

getfilesystemencoding () документация указывает на nl_langinfo, предполагая, что LC_CTYPE используется для определения кодировки.

Таким образом, если бы в вашей среде было LC_CTYPE="C.UTF-8", вы, вероятно, имели бы UTF-8 в качестве выхода getfilesystemencoding() вместо ANSI_X3.4-1968 (более известного как US-ASCII).

5
zeehio 21 Авг 2019 в 11:16

Python выбирает кодировку файловой системы по LC_CTYPE. LC_CTYPE = "C" вызвал кодировку файловой системы ASCII.

К вашему сведению, в Python 3.7 реализованы PEP 538 и PEP 540. Он использует UTF-8 по умолчанию, даже когда LC_CTYPE = "C".

3
methane 22 Авг 2019 в 17:45