python 3 UnicodeDecodeError: ‘gbk’ codec can’t decode bytes in position 2-3: illegal multibyte
2018-01-22 10:45
381 查看
出现错误的情景:
读取文件时:
with open(path,'r','utf8') as fp:
content=fp.read()
分析及解决方案:
【Python中如何处理UnicodeDecodeError和UnicodeEncodeError】
简答:
1.仔细分析错误的类型
2.搞清自己处理的字符串是什么类型的
3.然后换用这种的字符编码去编码或解码
详解:
以上面的错误:
为例,去解释,如何处理这类问题:
1.仔细分析错误的类型
(1)错误是Unicode的编码还是解码
对于此处,错误是:
的类型的。
此英文,对应的中文的含义,其实已经很清楚了:
Unicode的解码(Decode)出现错误(Error)了
而对于上面这句,我们可以推断出:
你当前正在处理某种编码类型的字符串
此处你要处理字符串,是想要将该字符串去解码decode,变成Unicode
但是将该字符串解码变成Unicode期间,却出错了
(2)所用的是何种编码
好的,接着看上面的错误:
使得错误信息更加明显了:
你此处,要将字符串解码为Unicode,是以gbk编码的方式去解码(该字符串变成Unicode)的
但是此处通过gbk的方式,却无法解码(can’t decode )
注:此处的codec,意思是:编解码(器),是Python内部的模块,用来编码或解码(字符串)的
(3)错误位置
此处的信息,后续一般也很少用到。
有时候会用于定位具体错误的位置。
此处暂且忽略。
(4)错误的细节错误类型
翻译为中文为:
非法的,多字节,序列
简单说就是:
没法(解码)了。
【原因及解决办法】
好了,针对于上面所分析出来的信息:
将一个字符串,通过gbk的方式,去解码,想要获得Unicode字符串,结果出错了
我们来说说原因和解决办法:
此种错误,有几种可能:
(1)要处理的字符串本身不是gbk编码,但是你却以gbk编码去解码
比如,字符串本身是utf-8的,但是你却用gbk去解码utf-8的字符串,所以结果不用说,则必然出错
则必然会出现这类的错误,说是,用gbk的方式去解码字符串,想要获得Unicode字符串,但是结果却解码出错了
解决办法:
1. 利用notepad++或者python的chardet模块确定当前文件的编码格式,并以其编码格式解码。
2.原代码改为:
with open(path,'rb') as fp:
content=fp.read()
读取文件时:
with open(path,'r','utf8') as fp:
content=fp.read()
分析及解决方案:
【Python中如何处理UnicodeDecodeError和UnicodeEncodeError】
简答:
1.仔细分析错误的类型
2.搞清自己处理的字符串是什么类型的
3.然后换用这种的字符编码去编码或解码
详解:
以上面的错误:
UnicodeDecodeError: ‘gbk’ codec can’t decode bytes in position 2-3: illegal multibyte sequence |
1.仔细分析错误的类型
(1)错误是Unicode的编码还是解码
对于此处,错误是:
UnicodeDecodeError |
此英文,对应的中文的含义,其实已经很清楚了:
Unicode的解码(Decode)出现错误(Error)了
而对于上面这句,我们可以推断出:
你当前正在处理某种编码类型的字符串
此处你要处理字符串,是想要将该字符串去解码decode,变成Unicode
但是将该字符串解码变成Unicode期间,却出错了
(2)所用的是何种编码
好的,接着看上面的错误:
‘gbk’ codec can’t decode |
你此处,要将字符串解码为Unicode,是以gbk编码的方式去解码(该字符串变成Unicode)的
但是此处通过gbk的方式,却无法解码(can’t decode )
注:此处的codec,意思是:编解码(器),是Python内部的模块,用来编码或解码(字符串)的
(3)错误位置
bytes in position 2-3 |
有时候会用于定位具体错误的位置。
此处暂且忽略。
(4)错误的细节错误类型
illegal multibyte sequence |
非法的,多字节,序列
简单说就是:
没法(解码)了。
【原因及解决办法】
好了,针对于上面所分析出来的信息:
将一个字符串,通过gbk的方式,去解码,想要获得Unicode字符串,结果出错了
我们来说说原因和解决办法:
此种错误,有几种可能:
(1)要处理的字符串本身不是gbk编码,但是你却以gbk编码去解码
比如,字符串本身是utf-8的,但是你却用gbk去解码utf-8的字符串,所以结果不用说,则必然出错
则必然会出现这类的错误,说是,用gbk的方式去解码字符串,想要获得Unicode字符串,但是结果却解码出错了
解决办法:
1. 利用notepad++或者python的chardet模块确定当前文件的编码格式,并以其编码格式解码。
2.原代码改为:
with open(path,'rb') as fp:
content=fp.read()
相关文章推荐
- Python中遇到"UnicodeDecodeError: ‘gbk’ codec can’t decode bytes in position 0: illegal multibyte
- Python中遇到"UnicodeDecodeError: ‘gbk’ codec can’t decode bytes in position 2-3: illegal multibyte sequ
- Python中遇到"UnicodeDecodeError: ‘gbk’ codec can’t decode bytes in position 2-3: illegal multibyte sequ
- Python中遇到"UnicodeDecodeError: ‘gbk’ codec can’t decode bytes in position 2-3: illegal multibyte sequ
- Python中遇到"UnicodeDecodeError: ‘gbk’ codec can’t decode bytes in position 2-3: illegal multibyte sequ
- Python中遇到"UnicodeDecodeError: ‘gbk’ codec can’t decode bytes in position 2-3: illegal multibyte sequ
- python UnicodeDecodeError: 'gbk' codec can't decode bytes in position
- Python中遇到"UnicodeDecodeError: ‘gbk’ codec can’t decode bytes in position 2-3: illegal multibyte sequ
- UnicodeDecodeError: 'gbk' codec can't decode bytes in position 12-13: illegal multibyte sequence
- Python--错误SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: tru
- 解决UnicodeDecodeError: ‘gbk’ codec can’t decode bytes in position 2-3: illegal multibyte sequence
- Python中UnicodeDecodeError:‘XXX’ codec can’t decode bytes in position错误信息解决办法
- Python 中 'unicodeescape' codec can't decode bytes in position XXX: trun错误解决方案
- 解决Python中导出图片出现的错误SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position
- python 中(unicode error)'unicodeescape' codec can't decode bytes in position 102-103:truncated\UXXXXX
- Python报错:'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape
- Python 中 'unicodeescape' codec can't decode bytes in position XXX: trun错误解
- ‘gbk' codec can't decode bytes in position 31023: illegal multibyte sequence
- Python脚本报错 (unicode error) 'unicodeescape' codec can't decode bytes in position 33-34: truncated
- Python 报错:SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: