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

2024-04-25 09:46:37 发布

您现在位置:Python中文网/ 问答频道 /正文

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


Tags: 文件in程序信息most错误linecall
3条回答

只是在file = open(filename, encoding="utf8")不起作用时添加 尝试file = open(filename, errors='ignore')

作为@LennartRegebro's answer的扩展:

如果你不知道你的文件使用什么编码,而上面的解决方案不起作用(这不是utf8),你发现自己只是在猜测-有online tools你可以用来识别什么编码。它们并不完美,但通常工作得很好。在你找到编码之后,你应该能够使用上面的解决方案。

编辑:(从评论复制)

一个非常流行的文本编辑器Sublime Text有一个显示编码的命令,如果它已经设置。。。

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

enter image description here

  1. 在底部的字段中输入view.encoding()并希望是最好的(除了Undefined我什么也得不到,但也许你会有更好的运气…)

enter image description here

有问题的文件没有使用CP1252编码。它正在使用另一种编码。你得自己弄清楚是哪一个。常见的是Latin-1UTF-8。因为0x90实际上并不意味着Latin-1中的任何内容,所以UTF-8(其中0x90是一个连续字节)更有可能。

打开文件时指定编码:

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

相关问题 更多 >

    热门问题