【问题标题】:UnicodeDecodeError: 'utf-8' when debugging Python files in PyCharm Community在 PyCharm 社区中调试 Python 文件时出现 UnicodeDecodeError: 'utf-8'
【发布时间】:2021-07-15 07:25:28
【问题描述】:

目前的结论:

converted 文件的encodingutf-8->utf-8 big->ansi -> utf-8。在每次转换重新打开文件。

观察一段时间后,没有这样的错误


当我使用PyCharm调试.py文件时,same文件有时会出现UnicodeDecodeError,有时是正常的。我的操作系统是Windows 10,PyCharm版本是2020.3.3社区版。

错误如下:

Traceback (most recent call last):
  File "D:\Program Files\JetBrains\PyCharm Community Edition 2020.3.3\plugins\python-ce\helpers\pydev\_pydevd_bundle\pydevd_comm.py", line 301, in _on_run
    r = r.decode('utf-8')
UnicodeDecodeError: 'utf-8' codec can't decode bytes in position 1022-1023: unexpected end of data

我尝试在文件头添加如下代码,但有时还是报错,如何解决?

#!/usr/bin/env Python
# coding=utf-8

我找到了另一种使用记事本保存为 UTF-8 文档的方法。我试过了,但有时还是会出错。

【问题讨论】:

  • default encoding of a Python module (or file) is UTF-8,可以验证PyCharm encoding settings。这意味着不必在文件顶部指定编码(问题中的最后两行在历史上曾使用过,但大多已变得不必要)。您应该只从 IDE 中更改编码。这个问题不是关于代码,而是在 IDE 中设置文件的编码。
  • @bad_coder 谢谢。在IDE编码设置中,项目编码和属性文件不是utf-8,已经改了。

标签: python utf-8 pycharm


【解决方案1】:

问题中描述的问题没有一个单一的答案。许多问题都可能导致指示的错误,因此最好在 PyCharm IDE 的上下文中解决几个可能的因素。

  1. 每个 Python 文件 .py(或任何其他文件)都有一个编码。 .py 源代码文件的默认编码是 Unicode UTF-8。这个问题是初学者经常遇到的问题,所以让我们从官方文档中找出相关的引用(以缩短任何不必要的阅读时间):

    Python’s Unicode Support

    Python 源代码的默认编码是 UTF-8,因此您可以简单地在字符串文字中包含一个 Unicode 字符。

    这意味着在大多数情况下您不需要编码字符串,请参阅Python Source Code Encodings - PEP 263。目前的做法是将源文件默认编码为 UTF-8 并省略模块顶部的编码字符串(这也更简洁)。

  2. PyCharm IDE 有许多编码配置,可以依次细化,从全局到项目,再到文件路径。默认情况下,所有内容都应设置为 UTF-8,尤其是源代码。请参阅 PyCharm 官方文档Configure file encoding settings

  3. 如果您正在处理外部数据文件,则上述情况除外,在这种情况下,您的源代码仍应保留为 UTF-8,并且以所需的任何编码打开数据文件。大多数关于UnicodeDecodeError 的问题都是关于在使用open() 函数到open some data file 时指定正确的文件编码(它们与您编写代码的源文件的编码无关)。

  4. 当您的源文件导致此错误时,常见原因是在复制粘贴或打开未以 UTF-8 编码的源代码文件之后。 (复制粘贴特别出乎意料,当您从未以 UTF-8 编码的文件复制并且 IDE 不会自动将您复制粘贴的内容转换到编辑器中时)。这可能会导致上述错误。所以你应该缩小哪个源代码文件的编码不是UTF-8并转换它。

我们无权访问您的项目文件,但给我的错误消息显示为调试器试图打开未以 UTF-8 编码的用户源代码文件,这与 IDE 配置和模块编码相反.

文件“D:\Program Files\JetBrains\PyCharm Community Edition 2020.3.3\plugins\python-ce\helpers\pydev_pydevd_bundle\pydevd_comm.py”

【讨论】:

  • 这个文件是PyCharm自带的文件,我会尽量保存为utf-8编码格式。
  • @jaried 不,我认为问题不在于 PyCharm 安装附带的文件。它可能是您编写(或正在尝试执行)的文件之一。
  • 我修改了编码设置,观察了一会,谢谢。
  • 不要尝试更改 PyCharm 安装的任何文件,否则可能会破坏 IDE。少数 XML configuration files 除外。
【解决方案2】:

添加“忽略”。它奏效了。

r = r.decode('utf-8', 'ignore')

https://docs.python.org/3/howto/unicode.html

【讨论】:

  • 我的代码的第 10 行用 # 注释掉了。和行尾的\n有关系吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-20
  • 2020-07-06
  • 2014-03-11
  • 2016-04-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多