UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 0: invalid start byte解决方法
2016-09-27 18:39:27
不论你是有着多年经验的
Python
老司机还是刚入门
Python
不久,你一定遇到过
Unicode
Encode
Error
、
Unicode
Decode
Error
错误,每当遇到错误我们就拿着 encode、
decode
函数翻来覆去的转换,有时试着试着问题就
解决
了,有时候怎么试都没辙,只有借用 Google 大神帮忙,但似乎很少去关心问题的本质是什么,下次遇到类似的问题重蹈覆辙,那么你有没有想过一次性彻底把
Python
字符编码给搞懂呢?
完全理解字符编码 与
Python
的渊源前,我们有必要把一些基础概念弄清楚,虽然有些概念我们每天都在接触甚至在使用它,但并不一定真正理解它。比如:字节
今天想使用pyquery库读取本地HTML文件时报错:
Unicode
Decode
Error
: ‘gbk’
codec
can’t
decode
byte
0xa1 in
position
164: illegal multi
byte
sequence。 翻译一下就是
Unicode
Decode
Error
: ‘gbk’编解码器无法解码位置164中的字节0xa1:非法多字节序列。
分析原因: 这个HTML文件是
utf-8
格式的文件,存储是二进制数据,使用pyquery读取时是采用gbk进行解码!读到了非gbk编码形式的二进制数据,于是就报错了!
排错过程: 我通过查看pyquery源码,企
问题出在版本上,因为在前面的函数里把fw = open(filename,'w')改成了fw = open(filename,'wb'),所以在这个函数中也把fr = open(filename)改为fr = open(filename,'rb'),问题
解决
,事实证明确实是版本不同导致的。
报错内容:
Unicode
Decode
Error
: '
utf-8
'
codec
can't
decode
byte
0x80
in
position
0:
invalid
s
tar
t
byte
环境:Ubuntu16.04 + pycharm 2018.3
解决
方法
:open文件时使用‘rb’方式
问题分析:数据文件在保存时以二进制形式保存,读取时应以二进制形式读取。原因看似简单,但在写行数较多的程序时经常会忽略,导致运行过程中报错。
版权声明:本文为CSDN博主「一个处女座的程序猿」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/qq_41185868/article/details/86483171。1、将 encoding=’
utf-8
’ 改为GB2312、gbk、ISO-8859-1,随便尝试一个均可以!编码的问题,将
utf-8
改为:gb18030 成功
解决
问题。2、将 encoding=’
utf-8
’ 改为gbk。
困扰了很久的问题今天终于
解决
了!!!
异步导入csv文件提示
Unicode
Decode
Error
: '
utf-8
'
codec
can't
decode
byte
0xc8 in
position
0:
invalid
continuation
byte
原代码为:
resp = requests.get(private_url).content
with open(file_dir_name, "w") as fd:
fd.write(resp.
decode
(encodin
python
读取文件时,抛异常:'
utf-8
'
codec
can't
decode
byte
0x80
in
position
64:
invalid
s
tar
t
byte
解决
办法
读取文件时,以二进制文件读取
open(file=file_full_name, mode='rb')
# 抛异常
open(file=file_full_name, mode='r')
mode 参数源码释义:
mode是一个可选字符串,用于指定文件的存储模式打开了。它默认为“r”,这意味着可