Python 3 декодирует текстовые файлы при чтении. Кодировка по умолчанию взята из locale.getpreferredencoding(False)
, что, очевидно, для вашей установки возвращает 'ASCII'
. См. Функцию documenation open()
функции :
В текстовом режиме, если кодировка не указана, используемая кодировка зависит от платформы:
blockquote>locale.getpreferredencoding(False)
вызывается, чтобы получить текущую кодировку локали.Вместо того, чтобы полагаться на системный параметр, вы должны открыть свои текстовые файлы, используя явный кодек:
currentFile = open(filename, 'rt', encoding='latin1')
где вы устанавливаете параметр
encoding
в соответствии с файлом, который вы читаете.Python 3 поддерживает UTF-8 как значение по умолчанию для исходного кода .
То же самое относится к записи в текстовый файл для записи; записанные данные будут закодированы, и если вы будете полагаться на системную кодировку, вы можете получить исключения
UnicodeEncodingError
, если вы явно не установите подходящий кодек.Вы можете прочитать на Python 3 и Unicode в Unicode HOWTO , который объясняет как кодирование исходного кода, так и чтение и запись данных Unicode.