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")
не работает
попробуй!--1-->
все хорошо