我试图让一个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>`  

当前回答

或者,如果你不需要解码文件,比如将文件上传到网站,可以使用:

open(filename, 'rb')

r =读数,b =二进制

其他回答

对我来说,改变Mysql字符编码一样,我的代码有助于整理出解决方案。照片=开放(pic3.png,编码= latin1)中的一个

对我来说,用utf16编码是有效的

file = open('filename.csv', encoding="utf16")

对于那些在Windows中开发Anaconda的人,我也遇到了同样的问题。notepad++帮我解决它。

在notepad++中打开文件。在右下方,它会告诉你当前的文件编码。 在顶部菜单中,在“视图”旁边找到“编码”。在“编码”转到“字符集”,耐心地寻找你需要的编码。在我的例子中,编码“Windows-1252”在“西欧”下找到了

如果file = open(filename, encoding="utf-8")不起作用,请尝试 File = open(filename, errors="ignore"),如果你想删除不需要的字符。(文档)

或者,如果你不需要解码文件,比如将文件上传到网站,可以使用:

open(filename, 'rb')

r =读数,b =二进制