UnicodeDecodeError: 'utf8' codec can't decode byte 0xd1 in position 0: invalid continuation byte解决办法
·
出现这个问题,首先就是检查源文件的编码方式是不是utf8,这个可以用vscode或者notepad++打开后直接看编码方式,当然也可以用其他方法查看。如果不是utf8编码方式,则自然不能用utf8解码,对此只需要把编码参数设置成对应的编码方式即可。
当然,上面说的是最简单基本的解决方式,一般遇到上述问题,如果用各种编辑软件打开源文件后显示的编码方式就是utf8,但是尽管设置了enconding='utf-8'还是会出现这样的错误,则说明实际上源文件的编码方式根本不是utf8。这种问题容易出现在两种在文件所包含的字符上极为相近的编码方式上,这时,就算是一些编辑软件显示的编码方式也是有误的,比如utf8和ISO-8859-1,前者是Unicode编码方案,后者是西欧语系编码方案,但是两者在部分字符上编码映射是一样的。常常的,如果一个文件的编码方式是ISO-8859-1,但是目标文件包含的字符和UTF8很相似,仅仅只在一些特殊字符上不一样,那么如果出现这些特殊字符,用utf8解码就会报上面这样的错误,而且因为一般也很难一开始就识别到底是utf8还是ISO-8859-1,所以一旦出这种错误,而且没有这种概念的话,是比较难debug的。
说了这么多,对于这种错误如果常规的方式没法解决,即显示是utf8编码,但是用utf8解码还是会报错,则往往可以试试把解码方式设置为'ISO-8859-1',一般根据经验都可以解决。但这个问题比较常出现在python2.x的版本中,python3.x版本基本不会有这个问题。
更多推荐
已为社区贡献3条内容
所有评论(0)