UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc8 in position 0: invalid continuation bytebp_

最近找数据,下载了个csv文件,用pandas打开出现乐编码错误,之前遇到过没注意,这次记录一下

bp_data = pd.read_csv("399300.csv")

错误原因:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc8 in position 0: invalid continuation byte

解决方法,看csv里面的数据是什么类型的。直接用二进制读csv,看能否解码就知道了

f = open("399300.csv","rb")#二进制格式读文件
i = 0
while True:
    i += 1 
    print(i)
    line = f.readline()
    if not line:
        break
    else:
        try:
#             print(line)
#             print(line.decode('utf8'))
            line.decode('utf8')
            #为了暴露出错误,最好此处不print
        except:
            print(str(line))

结果如下:

可以看到很多的字节编码都是无法解码的,对比csv里的数据,第一行是中文,下面的虽说是数据,估计也是和中文一样不支持

的数据类型。

解决方法是强制转编码

df = pd.read_csv('399300.csv', encoding = 'gb2312')

成功读取