Есть ли способ установить кодировку для всех файлов, читаемых и записываемых python - PullRequest
2 голосов
/ 21 апреля 2010

У меня есть скрипт на python, который должен читать файлы iso-8859-1, а также записывать в этой кодировке.

Теперь я запускаю скрипт в среде со всеми локалями, установленными в utf-8. Есть ли способ определить в моих скриптах на python, что для доступа к файлу нужно использовать кодировку iso-8859-1?

1 Ответ

4 голосов
/ 21 апреля 2010

Python на самом деле не слушает среду, когда речь идет о чтении и записи файлов в определенной кодировке. Он только слушает окружение, когда дело доходит до кодирования Unicode, записанного в стандартный вывод, , если стандартный вывод подключен к терминалу.

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

В Python 3.x вы открываете файлы либо в двоичном режиме, в этом случае вы получаете bytes, либо вы открываете его в текстовом режиме, и в этом случае вы должны указать кодировку, как с codecs.open() в Python 2.x.

Ни на одно из них не влияют переменные среды; Вы либо читаете байты, либо указываете кодировку.

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