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имеет команду для отображения кодировки, если она была установлена...
- на
View->Show Console(или Ctrl+')
- введите в поле внизу
view.encoding()и надеяться на лучшее (я не смог получить ничего, кромеUndefinedно, может быть, Вам повезет больше...)
просто добавить в случае
file = open(filename, encoding="utf8")не работает попробуйfile = open(filename, errors='ignore')все хорошо


Comments