Spyder IDE: UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe9 in position 667: invalid continuation byte

Spyder IDE: UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe9 in position 667: invalid continuation byte

所以,我正在和一位教授一起从事这个项目。截至目前,它包含几个自己制作的包和模块。我向他发送了一个包含整个项目的 .rar 文件以供修改,他很容易在他的电脑上使用 Spyder(与我使用的 IDE 相同)打开了该文件。我们通过视频通话共同对其进行了一些更正,之后他将更正后的文件发回给我(agin,一个 .rar 文件)。一旦我得到,我解压它并尝试在我的电脑中再次 运行 它(整个文件夹被配置为 Spyder 项目文件夹,所以我使用 spyder“打开项目”功能打开)并且所有文件似乎都执行很好,除了一个。我不知道为什么,但有一个文件不会在我按下“运行 文件”按钮后才执行。它只允许通过按下“运行 当前单元格并转到下一个按钮”按单元格方式执行自身,之后它 运行 就好了。但是,出于某种原因,尝试 运行 整个文件会引发以下错误:

File "C:\Users\andre\AppData\Local\Temp/ipykernel_10380/4038856374.py", line 1, in <module>
    runfile('C:/Users/andre/Desktop/Eafit/8vo Semestre/Monitoría Panel Solar/OptiSurf/Fitness_Function/fit_main.py', wdir='C:/Users/andre/Desktop/Eafit/8vo Semestre/Monitoría Panel Solar/OptiSurf/Fitness_Function')

  File "C:\Users\andre\anaconda3\lib\site-packages\debugpy\_vendored\pydevd\_pydev_bundle\pydev_umd.py", line 167, in runfile
    execfile(filename, namespace)

  File "C:\Users\andre\anaconda3\lib\site-packages\debugpy\_vendored\pydevd\_pydev_imps\_pydev_execfile.py", line 20, in execfile
    contents = stream.read()

  File "C:\Users\andre\anaconda3\lib\codecs.py", line 322, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe9 in position 667: invalid continuation byte

坦率地说,我不知道它是什么。一开始我以为它可能是已损坏的包之一,但评论整个文件并 运行ning 它,引发了完全相同的错误(更不用说我尝试的其余模块似乎工作得很好)。然后我认为这可能与我有两个同名项目有关(因为我的项目的未更正和未修改的副本也开始在完全相同的文件中引发完全相同的错误),所以我尝试擦除每个一次,但那没有用。最后,我尝试擦除所有内容,创建一个新的 spyder 项目并将文件夹粘贴到新项目中,但也没有成功。

综上所述,任何见解都会appreciated.I感觉文件本身可能已损坏?我的意思是,它引发的错误似乎表明无法解码文件名或类似的东西。如果有人有任何建议,我很乐意听取他们的意见。

首先:我在 Whosebug 上看到许多类似问题的问题,如果你使用 Google UnicodeDecodeError: 'utf-8' codec can't decode byte 那么你应该在几个小时前找到它们并且你可以在几个小时前解决这个问题 - 没有问问题。


错误显示 0xe9 的问题 - 如果我 运行 b'\xe9'.decode('utf-8) 然后我得到错误但是 b'\xe9'.decode('cp1250')b'\xe9'.decode('latin1') 给出 'é' -所以你的文件使用 latin1cp1250.

您应该找到一些工具将文件从 latin1/cp1250 转换为 utf-8

或者您可以为此使用 Python - 就像这样

filename = '...full path to your file...'

with open(filename, encoding='latin1', mode='r') as fh:
    data = fh.read()

with open(filename, encoding='utf-8', mode='w') as fh:
    fh.write(data)

(此处为 Spyder 维护者)对于由此给您带来的不便,我们深表歉意。这是 Spyder 中的一个错误,已在我们的 5.1.5 版本中修复。