我正在尝试使一个 Python 3 程序对充满信息的文本文件进行一些操作。但是,当尝试读取文件时,出现以下错误:
Traceback (most recent call last):
File "SCRIPT LOCATION", line NUMBER, in <module>
`text = file.read()`
File "C:\Python31\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 0x90 in position 2907500: character maps to `<undefined>`
该文件未使用CP1252
编码。它正在使用另一种编码。您必须弄清楚哪一个。常见的是Latin-1
和UTF-8
。由于0x90 Latin-1
实际上并不意味着什么, UTF-8
(其中0x90是连续字节)。
您在打开文件时指定编码:
file = open(filename, encoding="utf8")
如果file = open(filename, encoding="utf8")
不起作用,请尝试file = open(filename, errors="ignore")
,如果要删除不需要的字符。
如果您无法确定文件使用的编码方式,并且上述解决方案不起作用(不是utf8
),而您发现自己只是在猜测 -您可以使用在线工具来确定编码方式。它们并不完美,但通常效果很好。确定编码后,您应该可以使用上面的解决方案。
编辑:(从评论中复制)
一个非常流行的文本编辑器Sublime Text
有一个命令可以显示编码(如果已设置)...
View
-> Show Console
(或Ctrl + ` )view.encoding()
处输入字段,并希望取得最佳效果(除了Undefined
我什么也没得到,但也许您会遇到更多的好运...)