Python3解决问题:读取文件时,出现乱码或者“UnicodeDecodeError 'gbk' codec can't decode” 错误

  • 使用的电脑系统:Windows 10 64位
  • 使用的开发集成环境:Anaconda3
  • 使用的Python的版本:python 3.5.2

出现的错误

读取文件时,出现乱码或者UnicodeDecodeError: 'gbk' codec can't decode byte 0xXX in position XX: incomplete multibyte sequence 错误

出现错误的原因

这两个错误可能会出现一个,两个错误的出现的原因是一样的:当我们使用了一个不正确的编码方式去读取一个不是用这个编码方式编码的文件时,轻者出现乱码,重者出现UnicodeDecodeError错误。

实例

1.txt文件:

我爱Python
           我学习Python
           不积跬步,无以至千里
           不积小流,无以成江海

>>> f = open('C:\\Users\\XiangyangDai\\Desktop\\1.txt')
           >>> f.read()
           Traceback (most recent call last):
             File "<pyshell#1>", line 1, in <module>
              f.read()
           UnicodeDecodeError: 'gbk' codec can't decode byte 0xad in position 18: illegal multibyte sequence

解决方法:

读取文件时,指定正确的编码方式:

>>> f = open('C:\\Users\\XiangyangDai\\Desktop\\1.txt', encoding='utf-8')
           >>> f.read()
           '我爱Python\n我学习Python\n不积跬步,无以至千里\n不积小流,无以成江海'

在使用with语句时,也是一样的,例如在第035讲:图形用户界面入门:EasyGui中,读取文档内容:

下面的内容于2018年12月10日更新:

其实说白了,上面出现的问题就是因为编码出错引起的,今天,我总结了遇到的所有编码方面的问题,写了一篇博客:

Python编码问题的解决方案总结

大家可以看一下,一定会更进一步的。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值