Принудительное использование UTF-8 через cp1252 (Python3)

Я написал код, использующий оболочку Biopython Entrez. Код работал нормально на моем предыдущем ноутбуке с Win10 (Python 3.5.1), но я только что перенес код на новый ноутбук с Win10 с теми же версиями каждого пакета и установленным Python, и теперь я получаю ошибку декодирования.

Ошибка трассировки приводит к функции, которая извлекает текст — она пытается декодировать текст, используя cp1252, когда он должен использовать UTF-8. Я знаю, что подобные вопросы задавались, но никто не занимался этой проблемой внутри пакета (Biopython в моем случае). Копирование файла кодировки UTF-8 в Python/lib и переименование его в cp1252.py решает проблему, но, очевидно, это не долгосрочное решение.

File "C:\Users\arjun\AppData\Local\Programs\Python\Python35-32\lib\encodings\cp1252.py", line 23, in decode
    return codecs.charmap_decode(input,self.errors,decoding_table)[0]

UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 21715: character maps to <undefined>

person Arjun Sharma    schedule 08.08.2016    source источник
comment
У меня похожая проблема. Вам удалось ее решить? Я проверил ответы, и, по-видимому, python выбирает системную кодировку по умолчанию. И эта команда должна была установить правильную кодировку: chcp 65001 Но в моем случае это не сработало. Я использовал подход, упомянутый здесь: ​​stackoverflow.com/questions/9233027/ В моем случае это сработало.   -  person    schedule 28.11.2016


Ответы (1)


Используйте модуль io для чтения, если вы используете Python 3.x (https://docs.python.org/2/library/io.html#io.open). По умолчанию он будет использовать кодировку, указанную на его работающей платформе. Вы также можете указать свою собственную кодировку, как описано в документации.

person atjua    schedule 29.03.2017