方法1:枚举测试抛出异常,直到无异常为止
codinglist = ['us-ascII',"gbk", "utf-8"]
for i in codinglist:
try:
f = open("b.txt", 'r', encoding=i,errors="strict")
f.readline() #只open的时候不报错,只有在read的时候才报错,所以试读一行
except UnicodeDecodeError:
print("错误")
else:
print("正确")
break
f.seek(0,0) #由于有试读所以调整光标位置回最初位置,重新读
a = f.read()
print(a)#别忘了f.close()
方法2 chardet包
import chardet
f = open("b.txt", 'r')
data = f.read()
print(chardet.detect(data))
输出{'encoding':'utf-8','confidence':'0.99',langeue:''}
即百分之99可能用utf-8编码