UnicodeDecodeError: 'charmap' 编解码器无法解码位置 Y 的字节 X: 字符映射到 <未定义>
我正在尝试让一个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>`
在阅读这个问答后,如果你需要帮助来确定你想打开的文件的编码,可以查看 如何确定文本的编码。
15 个回答
88
另外,如果你不需要解码这个文件,比如说只是想把文件上传到一个网站,可以使用:
open(filename, 'rb')
这里的 r 代表 读取,b 代表 二进制
137
如果 file = open(filename, encoding="utf-8")
这个方法不管用,可以试试
file = open(filename, errors="ignore")
,这样可以去掉一些不需要的字符。 (文档)
1846
这个文件并不是用CP1252编码的,而是用其他编码。具体是哪种编码你需要自己去查找。常见的编码有Latin-1和UTF-8。因为在Latin-1中,0x90这个值其实是没有意义的,而在UTF-8中,0x90是一个延续字节,所以更有可能是用UTF-8编码。
当你打开文件的时候,需要指定编码:
file = open(filename, encoding="utf8")