错误 UnicodeDecodeError:'utf-8' 编解码器无法解码位置 0 中的字节 0xff:无效的起始字节

2025-01-07 08:44:00
admin
原创
159
摘要:问题描述:https://github.com/affinelayer/pix2pix-tensorflow/tree/master/tools在上述站点编译“process.py”时发生错误。python tools/process.py --input_dir data --operation resiz...

问题描述:

https://github.com/affinelayer/pix2pix-tensorflow/tree/master/tools

在上述站点编译“process.py”时发生错误。

python tools/process.py --input_dir data --operation resize --output_dir data2/resize
data/0.jpg -> data2/resize/0.png

Traceback (most recent call last):
  File "tools/process.py", line 235, in <module>
    main()
  File "tools/process.py", line 167, in main
    src = load(src_path)
  File "tools/process.py", line 113, in load
    contents = open(path).read()
  File"/home/user/anaconda3/envs/tensorflow_2/lib/python3.5/codecs.py", line 321, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte

错误原因是什么?Python的版本是3.5.2。


解决方案 1:

Python 尝试将字节数组(bytes它假设为 utf-8 编码的字符串)转换为 unicode 字符串 ( str)。这个过程当然是根据 utf-8 规则进行解码。当它尝试这样做时,它会遇到 utf-8 编码字符串中不允许的字节序列(即位置 0 处的 0xff)。

由于您没有提供任何我们可以查看的代码,因此我们只能猜测其余部分。

从堆栈跟踪中,我们可以假设触发操作是读取文件(contents = open(path).read())。我建议以如下方式重新编码:

with open(path, 'rb') as f:
  contents = f.read()

b模式说明符中的 表示文件open()应被视为二进制文件,因此contents将保留为bytes。 这样就不会发生任何解码尝试。

解决方案 2:

使用此解决方案,它将删除(忽略)字符并返回不包含这些字符的字符串。仅当您只需要删除它们而不是转换它们时才使用此方法。

with open(path, encoding="utf8", errors='ignore') as f:

使用errors='ignore'
您只会丢失一些字符。但如果您不关心它们,因为它们似乎是由于连接到我的套接字服务器的客户端的格式和编程错误而产生的额外字符。那么这是一个简单直接的解决方案。
参考

解决方案 3:

使用编码格式ISO-8859-1来解决这个问题。

解决方案 4:

遇到了类似的问题,最终使用 UTF-16 进行解码。我的代码如下。

with open(path_to_file,'rb') as f:
    contents = f.read()
contents = contents.rstrip("
").decode("utf-16")
contents = contents.split("
")

这会将文件内容作为导入,但它会返回 UTF 格式的代码。从那里它将被解码并用行分隔。

解决方案 5:

我在遇到同样的错误时遇到了这个线程,经过一些研究后我可以确认,这是当您尝试使用 UTF-8 解码 UTF-16 文件时发生的错误。

对于 UTF-16,第一个字符(UTF-16 中为 2 个字节)是字节顺序标记 (BOM),用作解码提示,不会在解码后的字符串中显示为字符。这意味着第一个字节将是 FE 或 FF,而第二个字节将是另一个。

在找到真正的答案后,我进行了大量编辑

解决方案 6:

处理 Pandas 数据框时出现类似错误的人可以使用以下解决方案。

示例解决方案。

df = pd.read_csv("File path", encoding='cp1252')

解决方案 7:

我在处理 PNG 文件时遇到了类似的问题。我尝试了上述解决方案,但没有成功。这个在python 3.8中对我有用

with open(path, "rb") as f:

解决方案 8:

仅使用

base64.b64decode(a) 

而不是

base64.b64decode(a).decode('utf-8')

解决方案 9:

这仅仅意味着选择了错误的编码来读取文件。

在 Mac 上,使用file -I file.txt查找正确的编码。在 Linux 上,使用file -i file.txt

解决方案 10:

这是因为读取文件时编码方式不同,python默认使用unicode编码,但在不同的平台可能不适用。

如果“utf-8”不起作用,我建议一种编码方法可以帮助您解决这个问题。

with open(path, newline='', encoding='cp1252') as csvfile:
    reader = csv.reader(csvfile)

如果您在此处更改编码方法,它应该可以工作。此外,如果上面的方法不适合您,您可以在此处找到其他编码方法standard-encodings 。

解决方案 11:

UnicodeDecodeError在尝试使用 读取“.csv”文件时遇到了这个问题pandas.read_csv()。就我而言,我无法使用其他编码器类型来解决这个问题。但是我没有使用

pd.read_csv(filename, delimiter=';')

我用过:

pd.read_csv(open(filename, 'r'), delimiter=';')

对我来说这似乎很好。

注意:在open()函数中,使用'r'而不是'rb'。因为'rb'返回的bytes对象首先会导致发生此解码器错误,这与 中的问题相同read_csv()。但由于我们的数据在 中,因此'r'返回是必需的,并且使用默认参数,我们可以轻松地使用函数解析数据。str`.csvencoding='utf-8'read_csv()`

解决方案 12:

如果你从串行端口接收数据,请确保使用正确的波特率(和其他配置):使用(utf-8)解码,但错误的配置会产生相同的错误

UnicodeDecodeError:'utf-8'编解码器无法解码位置 0 处的字节 0xff:无效的起始字节

要检查 Linux 上的串行端口配置,请使用:stty -F /dev/ttyUSBX -a

解决方案 13:

我遇到了类似的问题,并在网上搜索了这个问题

如果您遇到此问题,只需将您的 HTML 代码复制到新的 HTML 文件中并使用正常方法 <meta charset="UTF-8">
,它就会起作用......

只需在同一位置创建一个新的 HTML 文件并使用不同的名称

解决方案 14:

检查要读取的文件的路径。我的代码一直出错,直到我将路径名更改为当前工作目录。错误是:

newchars, decodedbytes = self.decode(data, self.errors)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte

解决方案 15:

如果您使用的是 Mac,请检查是否存在隐藏文件 .DS_Store。删除该文件后,我的程序就可以正常工作了。

解决方案 16:

我遇到了类似的问题。

解决方式:

import io

with io.open(filename, 'r', encoding='utf-8') as fn:
  lines = fn.readlines()

但是,我遇到了另一个问题。一些 html 文件(就我而言)不是 utf-8,因此我收到了类似的错误。当我排除这些 html 文件时,一切都顺利进行。

因此,除了修复代码之外,还要检查您正在读取的文件,也许那里确实存在不兼容问题。

解决方案 17:

您必须使用 latin1 编码来读取此文件,因为此文件中有一些特殊字符,请使用以下代码片段来读取该文件。

这里的问题是编码类型。当 Python 无法转换要读取的数据时,它会给出错误。

您可以使用 latin1 或其他编码值。

我说尝试并测试以找到适合您的数据集的正确方法。

解决方案 18:

我在处理 Linux 生成的文件时遇到了同样的问题。结果发现它与包含问号的文件有关。

解决方案 19:

以下代码对我而言有效:

df = pd.read_csv(文件名,sep ='\t',编码='cp1252')

解决方案 20:

如果可能,请在文本编辑器中打开文件并尝试将编码更改为 UTF-8。否则,请在操作系统级别以编程方式执行此操作。

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   2525  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1542  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Filestage、Xebrio、Kintone、Monday、Celoxis、Backlog、BubblePPM、Plutio、Scoro。在当今快速变化的商业环境中,项目管理系统的选择成为企业成功的关键因素之一。许多企业在选购项目管理系统时,常常面临功能复杂、...
项目管理系统   0  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Plutio、Kantata、Kintone、LiquidPlanner、Motion、Smartsheet、Targa、QuickBase、Hive。在当今快节奏的商业环境中,项目管理软件已成为企业提升效率、优化资源分配和确保项目按时交付的关键工具。然而,面对市...
开源项目管理软件   15  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Scoro、Wekan、Hubstaff、Kintone、Wrike、Filestage、Trello、Airtable、Paymo。在当今快节奏的商业环境中,项目管理已成为企业成功的关键因素之一。然而,许多项目经理和团队在管理复杂项目时常常面临诸多挑战,如任务分...
项目管理系统   7  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用