【问题标题】:Spyder IDE: UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe9 in position 667: invalid continuation byteSpyder IDE: UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe9 in position 667: invalid continuation byte
【发布时间】:2021-12-04 10:18:11
【问题描述】:

所以,我正在和一位教授一起做这个项目。到目前为止,它包含几个自己制作的包和模块。我向他发送了一个包含整个项目的 .rar 文件以供修订,他很容易使用 Spyder(与我使用的 IDE)在他的电脑中打开该文件。我们通过视频通话共同对其进行了一些更正,之后他将更正后的文件发回给我(同样,.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

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

总之,任何见解都将不胜感激。我感觉文件本身可能已损坏?我的意思是,它引发的错误似乎表明文件名无法解码或类似的东西。如果有人有任何建议,我很乐意听取他们的意见。

【问题讨论】:

  • 您可能有文件不使用utf-8 但其他编码,转换它有问题。 Windows 经常使用latin1cp1250 - 在某些功能中可能需要使用encoding=...
  • error 显示 0xe9 的问题 - 如果我运行 b'\xe9'.decode('utf-8) 然后我得到错误但 b'\xe9'.decode('cp1250')b'\xe9'.decode('latin1') 给出 'é' - 所以你的文件使用 latin1cp1250
  • 顺便说一句:我在 Stackoverflow 上看到了许多类似问题的问题,如果您使用 Google UnicodeDecodeError: 'utf-8' codec can't decode byte,那么您应该在几个小时前找到它们,并且您可以在几个小时前解决这个问题 - 无需提出问题。

标签: python spyder


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    首先:我在 Stackoverflow 上看到了许多类似问题的问题,如果您使用 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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-14
      • 1970-01-01
      • 1970-01-01
      • 2021-12-01
      • 2020-03-01
      • 1970-01-01
      • 2020-12-26
      • 2021-11-24
      相关资源
      最近更新 更多