关于视窗::”表”unicodedecodeerror编解码器不能解码的字节的位置:X Y中的字符映射到模糊><

UnicodeDecodeError: 'charmap' codec can't decode byte X in position Y: character maps to <undefined>

我试图让一个python 3程序对一个包含信息的文本文件进行一些操作。但是,当尝试读取文件时,我得到以下错误:

Traceback (most recent call last):
File"SCRIPT LOCATION", line NUMBER, in
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

如果有人能帮助我克服这个问题,我将不胜感激。


所讨论的文件没有使用CP1252编码。它正在使用另一种编码。哪一个你必须自己弄清楚。常见的有Latin-1UTF-8。由于0x90实际上在Latin-1中没有任何意义,所以UTF-8更可能(其中,0x90是一个连续字节)。

打开文件时指定编码:

1
file = open(filename, encoding="utf8")


作为@lennarrtregebro答案的扩展:

如果你不知道它是什么编码,而上面的解决方案不起作用(它不是utf8),你发现自己只是在猜测——有一些在线工具可以用来识别编码是什么。它们并不完美,但通常工作得很好。在计算出编码之后,您应该能够使用上面的解决方案。

编辑:(从注释复制)

一个相当流行的文本编辑器Sublime Text有一个命令来显示编码,如果它被设置了…

  • 转到View->Show Console(或ctrl+`)
  • enter image description here

  • 在最下面的view.encoding()处输入字段,并希望得到最好的结果(除了Undefined以外,我什么也得不到,但也许你会有更好的运气…)
  • enter image description here


    加上万一file = open(filename, encoding="utf8")不起作用试试file = open(filename, errors='ignore')