UnicodeDecodeError: кодек "charmap" не может декодировать байт X в позиции Y: символьные карты для

Я пытаюсь заставить программу Python 3 выполнять некоторые манипуляции с текстовым файлом, заполненным информацией. Однако при попытке прочитать файл я получаю следующую ошибку:

Traceback (most recent call last):
File "SCRIPT LOCATION", line NUMBER, in <module>
text = file.read()
File "C:Python31libencodingscp1252.py", line 23, in decode
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x90 in position 2907500: character   maps to <undefined>

Если кто-нибудь может помочь мне попытаться преодолеть эту проблему, я был бы очень благодарен.

3 ответов


файл, о котором идет речь, не использует CP1252 кодировка. Он использует другую кодировку. Который из них ты должен выяснить сам. Общие из них Latin-1 и UTF-8. С 0x90 на самом деле ничего не значит в Latin-1, UTF-8 (где 0x90 является байтом продолжения) более вероятно.

вы указываете кодировку при открытии файла:

file = open(filename, encoding="utf8")

как расширение на @LennartRegebro ответ:

если вы не можете сказать, какая кодировка это и решение выше не работает (это не utf8) и вы обнаружили, что просто догадываетесь-есть онлайн инструменты что вы можете использовать, чтобы определить, какая это кодировка. Они не идеальны, но обычно работают просто отлично. После того, как вы выяснили кодировку, вы должны иметь возможность использовать решение выше.

EDIT: (скопировано из комментариев)

A довольно популярный текстовый редактор Sublime Text имеет команду для отображения кодировки, если она была установлена...

  1. на View ->Show Console (или Ctrl+`)

enter image description here

  1. введите в поле внизу view.encoding() и надеяться на лучшее (я не смог получить ничего, кроме Undefined но, может быть, Вам повезет больше...)

enter image description here


просто добавить в случае file = open(filename, encoding="utf8") не работает попробуй!--1-->

все хорошо