思思大美女 发表于 2019-7-4 10:58:58

为什么我打开文件总是出现UnicodeDecodeError这个错误呢?

UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 46: illegal multibyte sequence

百度说是要改encoding

with open (each_filename,encoding ="utf-8") as f:

改了encoding之后又会出现新的error
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xca in position 0: invalid continuation byte


最后是创建了一个简单的文件夹来验证程序对不对,就没报错了

求大神帮忙解决一下

wp231957 发表于 2019-7-4 11:05:46

看目标文件编码格式

思思大美女 发表于 2019-7-4 11:48:41

wp231957 发表于 2019-7-4 11:05
看目标文件编码格式

是目标文件是什么编码就要用什么编码打开对吧,那我要迭代打开多个文件,有utf-8的,有ASCII码的,有解决方法么,还是我得把所有目标文件统一编码方式?

wp231957 发表于 2019-7-4 11:53:57

思思大美女 发表于 2019-7-4 11:48
是目标文件是什么编码就要用什么编码打开对吧,那我要迭代打开多个文件,有utf-8的,有ASCII码的,有解决 ...

是目标文件是什么编码就要用什么编码打开对吧,这个是对的
那我要迭代打开多个文件,有utf-8的,有ASCII码的,有解决方法么,
还是我得把所有目标文件统一编码方式?这个是不现实的

先判断一下目标文件的编码然后再使用相应的编码格式去打开

# coding: utf-8
from os import listdir
import chardet

#程序的功能就是查阅e:\gcc-html\gcc的所有文件的编码格式
#格式如下:   编码                   相似度               语言
#      'encoding': 'GB2312', 'confidence': 0.99, 'language': 'Chinese'
if __name__=="__main__":
files=listdir('e:\gcc-html\gcc')
for file in files:
    ftmp="e:\\gcc-html\\gcc\"+file
    fo = open(ftmp, "rb").read()
    print (chardet.detect(fo))
页: [1]
查看完整版本: 为什么我打开文件总是出现UnicodeDecodeError这个错误呢?