Python на самом деле не слушает среду, когда речь идет о чтении и записи файлов в определенной кодировке. Он только слушает окружение, когда дело доходит до кодирования Unicode, записанного в стандартный вывод, , если стандартный вывод подключен к терминалу.
При чтении и записи файлов в Python 2.x вы имеете дело со строками байтов (тип str
) по умолчанию. Это закодированные данные. Вы должны декодировать данные, которые вы читаете вручную, и кодировать то, что вы хотите записать. Или вы можете использовать codecs.open()
, чтобы открыть файлы, которые сделают кодировку для вас.
В Python 3.x вы открываете файлы либо в двоичном режиме, в этом случае вы получаете bytes
, либо вы открываете его в текстовом режиме, и в этом случае вы должны указать кодировку, как с codecs.open()
в Python 2.x.
Ни на одно из них не влияют переменные среды; Вы либо читаете байты, либо указываете кодировку.