一文搞懂Python文件读取报错UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte

这篇具有很好参考价值的文章主要介绍了一文搞懂Python文件读取报错UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题描述:

下面是一个非常简单的读取并打印文件内容的示例:

with open('test.txt', 'r') as f:
    contents = f.read()

print(contents)

在test.txt文本文件中,只有一个 `你` 字:

test.txt

但是,我们在运行这段代码时,出现了如下的错误:

一文搞懂Python文件读取报错UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte,Python相关,python,pycharm,Powered by 金山文档

报错:

UnicodeDecodeError: 'gbk' codec can't decode byte 0xa0 in position 2: incomplete multibyte sequence

分析问题:

  1. 首先我们得知道这个错误是什么意思。

报错翻译过来就是:

Unicode解码错误:“gbk”编解码器无法解码位置2的字节0xa0:不完整的多字节序列

  1. 通过了解报错信息,我们知道了这是一个解码的错误。要分析这个错误,我们首先要对Python的字符编码有一个基本的认识。

对于Python字符编码的问题,大家可以看看我的这篇博文:

一文搞懂Python字符编码(编码方式、乱码和报错原因)_lyb06的博客-CSDN博客

在这篇博文中,我不仅介绍了字符编码,还分析了这个报错出现的具体原因,但这里我们主要探讨解决方法,就不做赘述了。想了解具体原因可看该文第3、4部分。
  1. 现在我们知道了这个错误是因为我们使用gbk(Windows 平台,默认编码是 gbk)对文本进行解码时,有一处地方多出了一个字节无法解码。gbk将一个汉字编码为2个字节,也就是每两个字节可解码为一个汉字,而一个字节无法解码,故报错,这也就解释了报错信息后面的:incomplete multibyte sequence(不完整的多字节序列)。

  1. 出现这种问题,一般是由于该文本文件是用utf-8编码的(utf-8将一个汉字编码为3个字节),但我们却使用gbk来解码。由于二者对于汉字的编码方式是不一样的,解码时又恰好出现了多余的无法解码的字节,因此就出现了报错。

为什么要说恰好出现多余的无法解码的字节?

因为有种特殊情况不会报错!用utf-8编码了两个汉字(6个字节),此时用gbk可以将其解码为3个汉字(6个字节分为3份2个字节,可以对应3个汉字),这种情况不会报错,但显示的信息不一样,就是我们常说的乱码 ,详情见上面提到的博文。

你可将读取的test.txt文件中的内容改为两个汉字 "你好" ,在运行一下这个代码,你会发现没有报错,但是打印出的信息就不是 '你好' 了。

5、要解决这个问题,我们就要让Python用utf-8来解码文件。

解决方法:

在使用open() 时,我们添加参数 encoding='utf-8'。使用这个参数,相当于我们就告诉了Python:我们这个文件是用utf-8编码的,你一会儿对这个文件解码的时候,就用utf-8解码,不要用gbk解码。

with open('test.txt', 'r', encoding='utf-8') as f:
    contents = f.read()

print(contents)

输出:

一文搞懂Python文件读取报错UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte,Python相关,python,pycharm,Powered by 金山文档

成功!问题解决。文章来源地址https://www.toymoban.com/news/detail-604358.html

到了这里,关于一文搞懂Python文件读取报错UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python 读取csv文件时报错:UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xd0 in position 0:invalid

    问题描述:我在读取csv文件时 python报了如下错误 或者报了以下错误:UnicodeDecodeError: \\\'gbk\\\' codec can\\\'t decode byte 0xb1 in position 5: illegal multibyte sequence 目录 问题引出: 错误示范如下: 解决方案如下: 我先创建的xlsx 或者 xls文件,然后再改成以csv为后缀的文件,最后在python里读取失

    2024年02月16日
    浏览(65)
  • 关于UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte的解决办法

    最近在学《Python编程:从入门到实践》,在做到 例题 10-10:常见单词 时遇到了如下报错信息: 报错原因: UnicodeDecodeError: ‘gbk’ codec can’t decode byte Python 的 open 方法默认编码取决于平台,如果是 Windows 平台,默认编码是 gbk,如果文件是 utf-8 编码,就会报这个错误。 将打开

    2024年02月11日
    浏览(125)
  • Python 基于csv 读取文本文件提示:‘gbk‘ codec can‘t decode byte 0xbf in position 2: illegal multibyte sequence

    Python 基于csv 读取文本文件提示:‘gbk‘ codec can‘t decode byte 0xbf in position 2: illegal multibyte sequence 错误大致意思:Unicode的解码(Decode)出现错误(Error)了,以gbk编码的方式去解码(该字符串变成Unicode),但是此处通过gbk的方式,却无法解码(can’t decode )。“illegal multibyt

    2024年02月05日
    浏览(70)
  • Python 运行报错 UnicodeDecodeError 解决方法

    问题描述: 在使用  Jupyter Notebook  进行深度学习模型导入的时候报错UnicodeDecodeError 问题描述表示出现了无法识别的字符,导致模型文件加载失败,并且这个无法识别的字符是第26个字符。 解决思路: 实际上是因为这段代码中传递模型文件路径字符出现了utf-8无法解码的情况

    2024年02月10日
    浏览(33)
  • 一篇文章彻底搞懂Python字符编码方式(中文编码,UTF-8,unicode,gb,gbk,中文乱码,爬虫中文乱码)

    目录 前言 一、字符编码方式的来龙去脉。 1.字符集的含义。 2.编码方式演化过程 1.ASCII 2.GB2312、GBK 3.Unicode 4.UTF-8 二、Python的字符编码及相关操作 1.window系统的字符编码 2.Python的字符编码 1.Python中str与bytes的区别和联系 2.Python encode()方法【对str进行编码】 3.Python decode()方法【对

    2024年01月17日
    浏览(57)
  • 解决UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0x80 in position 0: illegal multibyte sequence问题

    1、解决Python报错UnicodeDecodeError: \\\'gbk\\\' codec can\\\'t decode byte 0x80 in position 658: illegal multibyte 改成 2、解决UnicodeDecodeError: \\\'gbk\\\' codec can\\\'t decode byte 0x80 in position 0: illegal multibyte sequence问题 改成

    2024年02月16日
    浏览(48)
  • 一文搞懂linux的proc文件

      目录 proc文件夹是干嘛用? proc下都有什么系统信息?  /proc/bus /proc/buddyinfo /proc/cgroups        /proc/cmdline /proc/consoles /proc/cpuinfo /proc/crypto /proc/devices /proc/diskstats /proc/execdomains /proc/fb /proc/filesystems        /proc/fs /proc/inerrupts /proc/iomem /proc/ioports /proc/irq /proc/kallsyms /proc/keys /pr

    2024年02月03日
    浏览(84)
  • 解决SubtitlesClip读取字幕文件时报 ‘gbk‘ codec can‘t decode byte xxx in position xxx

    操作系统:windows10 moviepy版本:1.0.3 python:3.10 在使用moviepy处理视频时,加载srt字幕使用的SubtitlesClip这个类读取的文件。随后报错如下: moviepy这个版本读取文件时,使用的with open,且没有指定encoding参数,因此默认使用的操作系统的编码方式打开,那么在windows系统通常会是

    2024年02月09日
    浏览(52)
  • 【C语言】一文搞懂C语言文件操作

    2023年05月29日
    浏览(18)
  • 一文彻底搞懂Nginx的.conf文件路径配置

    前言:最近在Nginx上部署Vue项目,同时还存了一些静态资源,但我查了好久都没找到一篇详细介绍路径配置的文章,因此就根据我有限的经验写了这篇文章,希望能够对读者有所帮助 如下图所示,这是我配置好的一个server代码块,我这里配置了https,所以会比默认的多一部分

    2024年02月09日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包