UnicodeDecodeError,无效的连续字节

2024-12-19 09:23:00
admin
原创
55
摘要:问题描述:为什么下面的项目失败了?为什么使用“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”

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   997  
  在项目管理领域,CDCP(Certified Data Center Professional)认证评审是一个至关重要的环节,它不仅验证了项目团队的专业能力,还直接关系到项目的成功与否。在这一评审过程中,沟通技巧的运用至关重要。有效的沟通不仅能够确保信息的准确传递,还能增强团队协作,提升评审效率。本文将深入探讨CDCP...
华为IPD流程   34  
  IPD(Integrated Product Development,集成产品开发)是一种以客户需求为核心、跨部门协同的产品开发模式,旨在通过高效的资源整合和流程优化,提升产品开发的成功率和市场竞争力。在IPD培训课程中,掌握关键成功因素是确保团队能够有效实施这一模式的核心。以下将从五个关键成功因素展开讨论,帮助企业和...
IPD项目流程图   40  
  华为IPD(Integrated Product Development,集成产品开发)流程是华为公司在其全球化进程中逐步构建和完善的一套高效产品开发管理体系。这一流程不仅帮助华为在技术创新和产品交付上实现了质的飞跃,还为其在全球市场中赢得了显著的竞争优势。IPD的核心在于通过跨部门协作、阶段性评审和市场需求驱动,确保...
华为IPD   39  
  华为作为全球领先的通信技术解决方案提供商,其成功的背后离不开一套成熟的管理体系——集成产品开发(IPD)。IPD不仅是一种产品开发流程,更是一种系统化的管理思想,它通过跨职能团队的协作、阶段评审机制和市场需求驱动的开发模式,帮助华为在全球市场中脱颖而出。从最初的国内市场到如今的全球化布局,华为的IPD体系在多个领域展现...
IPD管理流程   71  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

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

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

内置subversion和git源码管理

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

免费试用