python37读txt,csv文件报错:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd5 in position 0:

环境说明:编辑器pycharm,python37,win7

1、读txt文件代码:

file1 = open(r'C:\Users\Administrator\Desktop\test\abc.txt','r',encoding='utf-8')  

filecontent= file1.read() 

print(filecontent)

运行报错信息:

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

解决方法一:

取消字符编码格式:

file1 = open(r'C:\Users\Administrator\Desktop\test\abc.txt','r')

filecontent= file1.read()

print(filecontent)

 

解决方法二:

编码格式改为 gbk

file1 = open(r'C:\Users\Administrator\Desktop\test\abc.txt','r',encoding='utf-8')

filecontent= file1.read()

print(filecontent)

这种方法第一次运行会报错:后面运行没报错了,原因不明~~

UnicodeDecodeError: 'gbk' codec can't decode byte 0x89 in position 8: illegal multibyte sequence

 

解决方法三:

修改原文件编码格式:默认存的文件编码格式为ANSI,文件另存为改编码为UTF-8后,可以正常打开。

如果修改为UTF-8还报错,可以尝试修改为Unicode(不过我的修改为Unicode还是会报之前一样的错误~~)

这是编码解码问题,各个编码类型采用的进制不同,会造成在内存中的地址不同,而且编码位数也不同,因此无法对应不一样会造成无法解码的状态。

2、读csv文件代码:

with open(r'C:\Users\Administrator\Desktop\test\ceshi_02.csv',newline = '',encoding='utf-8') as f:
    reads = csv.reader(f)    
    for row in reads:       
        print(row)

备注说明:如果ceshi_02.csv文件中没有中文字符,可以读取,但是如果有中文字符,读取文件时报一下错误:

报错信息:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc9 in position 0: invalid continuation byte

解决方法:

将字符编码改为:gb18030,其他不变

即with open(r'C:\Users\Administrator\Desktop\test\ceshi_02.csv',newline = '',encoding='gb18030') as f:

   

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值