UnicodeDecodeError:'charmap'编解码器无法解码Y位置的字节X:字符映射到<undefined>

我试图让一个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-1UTF-8 。 由于0x90实际上并不意味着Latin-1任何内容,所以UTF-8 (其中0x90是继续字节)更有可能。

您在打开文件时指定编码:

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

作为@LennartRegebro的扩展回答:

如果你不知道它是什么编码,上面的解决scheme是行不通的(这不是utf8 ),你发现自己只是猜测 – 有在线工具 ,你可以用来确定是什么编码。 他们并不完美,但通常工作得很好。 在你想出编码之后,你应该可以使用上面的解决scheme。

编辑:(复制从评论)

一个非常stream行的文本编辑器Sublime Text有一个命令来显示编码,如果它已被设置…

  1. 转到View – > Show Console (或Ctrl + `

在这里输入图像描述

  1. 在底部view.encoding()input字段,并希望最好(我不能得到任何东西,但Undefined但也许你会有更好的运气…)

在这里输入图像描述