UnicodeDecodeError,无效的连续字节

2024-12-19 09:23:00
admin
原创
123
摘要:问题描述:为什么下面的项目失败了?为什么使用“latin-1”编解码器可以成功?o = "a test of xe9 char" #I want this to remain a string as this is what I am receiving v = o.decode(&quo...

问题描述:

为什么下面的项目失败了?为什么使用“latin-1”编解码器可以成功?

o = "a test of xe9 char" #I want this to remain a string as this is what I am receiving
v = o.decode("utf-8")

其结果是:

 Traceback (most recent call last):  
 File "<stdin>", line 1, in <module>  
 File "C:Python27libencodings/utf_8.py",
 line 16, in decode
     return codecs.utf_8_decode(input, errors, True) UnicodeDecodeError:
 'utf8' codec can't decode byte 0xe9 in position 10: invalid continuation byte

解决方案 1:

当我尝试通过方法打开 CSV 文件时遇到了同样的错误pandas.read_csv

解决方案是将编码更改为latin-1

pd.read_csv('ml-100k/u.item', sep='|', names=m_cols , encoding='latin-1')

解决方案 2:

在二进制中,0xE9 看起来像1110 1001。如果您在 Wikipedia 上阅读有关UTF-8 的内容,您会看到这样的字节后面必须跟两个形式的10xx xxxx。因此,例如:

>>> b'xe9x80x80'.decode('utf-8')
u'/u9000'

但这只是导致异常的机械原因。在这种情况下,您有一个几乎肯定用 latin 1 编码的字符串。您可以看到 UTF-8 和 latin 1 看起来有何不同:

>>> u'xe9'.encode('utf-8')
b'xc3xa9'
>>> u'xe9'.encode('latin-1')
b'xe9'

(请注意,我在这里混合使用了 Python 2 和 3 表示形式。输入在任何版本的 Python 中都是有效的,但您的 Python 解释器不太可能以这种方式同时显示 unicode 和字节字符串。)

解决方案 3:

这是无效的 UTF-8。该字符是 ISO-Latin1 中的 e-acute 字符,这就是它在该代码集上成功的原因。

如果您不知道接收字符串的代码集,那么您会遇到一些麻烦。最好为您的协议/应用程序选择一个代码集(希望是 UTF-8),然后您就会拒绝那些未解码的代码集。

如果你做不到这一点,你就需要启发式方法。

解决方案 4:

因为 UTF-8 是多字节的,并且没有与您xe9加上后面的空格的组合相对应的字符。

为什么它在utf-8 和 latin-1都会成功?

同一句话在 utf-8 中的翻译如下:

>>> o.decode('latin-1').encode("utf-8")
'a test of xc3xa9 char'

解决方案 5:

如果显示 UTF-8 错误,请使用此方法

pd.read_csv('File_name.csv',encoding='latin-1')

解决方案 6:

如果在操作刚打开的文件时出现此错误,请检查是否在'rb'模式下打开了它

解决方案 7:

utf-8代码错误通常发生在数值范围超过0到127时。

引发这个异常的原因是:

1)如果代码点小于 128,则每个字节与代码点的值相同。 2)如果代码点大于或等于 128,则 Unicode 字符串无法以此编码表示。(在这种情况下,Python 会引发 UnicodeEncodeError 异常。)

为了解决这个问题,我们有一套编码,最广泛使用的是“Latin-1,也称为ISO-8859-1”

因此,ISO-8859-1 Unicode 点 0-255 与 Latin-1 值相同,因此转换为此编码只需将代码点转换为字节值;如果遇到大于 255 的代码点,则该字符串不能编码为 Latin-1

当您尝试加载数据集时出现此异常,请尝试使用此格式

df=pd.read_csv("top50.csv",encoding='ISO-8859-1')

在语法末尾添加编码技术,然后接受加载数据集。

解决方案 8:

当你在 Pandas 中输入特定文件或数据时,就会出现这种类型的错误,例如:-

data=pd.read_csv('/kaggle/input/fertilizers-by-product-fao/FertilizersProduct.csv)

然后错误显示如下:- UnicodeDecodeError:'utf-8'编解码器无法解码位置 1 中的字节 0xf4:无效的连续字节

因此,为了避免这种类型的错误,可以通过添加参数来删除

data=pd.read_csv('/kaggle/input/fertilizers-by-product-fao/FertilizersProduct.csv', encoding='ISO-8859-1')

解决方案 9:

当我从文件中读取包含希伯来语的文本时,也发生了这种情况.txt

我点击了: file -> save as并将此文件保存为UTF-8编码

解决方案 10:

TLDR:我建议在切换编码器以消除错误之前深入调查问题的根源。

当我处理大量包含附加 zip 文件的 zip 文件时出现此错误。

我的工作流程如下:

  1. 阅读 zip

  2. 阅读子 zip

  3. 从子 zip 中读取文本

有一次我遇到了上面的编码错误。仔细检查后发现,一些子 zip 错误地包含了其他 zip。将这些 zip 读取为文本会导致一些奇怪的字符表示,我可以用 来静音encoding="latin-1",但这反过来又导致了后续的问题。由于我处理的是国际数据,因此认为这是一个编码问题并不完全愚蠢(我遇到了 问题0xc2: Â),但最终这不是实际问题。

解决方案 11:

在这种情况下,我尝试执行激活路径/文件.sql的.py。

我的解决方案是将file.sql的编码修改为“UTF-8 without BOM”,这样就成功了!

您可以使用 Notepad++ 来完成。

我会留下我的一部分代码。

con = psycopg2.connect(host = sys.argv[1],
port = sys.argv[2],dbname = sys.argv[3],user = sys.argv[4], password = sys.argv[5])

cursor = con.cursor()
sqlfile = open(path, 'r')

解决方案 12:

我遇到了这个问题,结果发现我直接从 Google Sheets 文件中保存了 CSV。换句话说,我当时在一个 Google Sheet 文件中。我选择保存一份副本,然后当我的浏览器下载它时,我选择打开。然后,我直接保存了 CSV。这是错误的举动。

修复这个问题的方法是先将工作表保存为.xlsx本地计算机上的文件,然后从那里将单个工作表导出为.csv。然后错误就消失了pd.read_csv('myfile.csv')

解决方案 13:

解决方案是更改为“UTF-8 sin BOM”

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   1565  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1354  
  信创国产芯片作为信息技术创新的核心领域,对于推动国家自主可控生态建设具有至关重要的意义。在全球科技竞争日益激烈的背景下,实现信息技术的自主可控,摆脱对国外技术的依赖,已成为保障国家信息安全和产业可持续发展的关键。国产芯片作为信创产业的基石,其发展水平直接影响着整个信创生态的构建与完善。通过不断提升国产芯片的技术实力、产...
国产信创系统   21  
  信创生态建设旨在实现信息技术领域的自主创新和安全可控,涵盖了从硬件到软件的全产业链。随着数字化转型的加速,信创生态建设的重要性日益凸显,它不仅关乎国家的信息安全,更是推动产业升级和经济高质量发展的关键力量。然而,在推进信创生态建设的过程中,面临着诸多复杂且严峻的挑战,需要深入剖析并寻找切实可行的解决方案。技术创新难题技...
信创操作系统   27  
  信创产业作为国家信息技术创新发展的重要领域,对于保障国家信息安全、推动产业升级具有关键意义。而国产芯片作为信创产业的核心基石,其研发进展备受关注。在信创国产芯片的研发征程中,面临着诸多复杂且艰巨的难点,这些难点犹如一道道关卡,阻碍着国产芯片的快速发展。然而,科研人员和相关企业并未退缩,积极探索并提出了一系列切实可行的解...
国产化替代产品目录   28  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

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

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

内置subversion和git源码管理

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

免费试用