鱼C论坛

 找回密码
 立即注册
查看: 2212|回复: 3

[已解决]为什么我打开文件总是出现UnicodeDecodeError这个错误呢?

[复制链接]
发表于 2019-7-4 10:58:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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


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

求大神帮忙解决一下
最佳答案
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))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-7-4 11:05:46 | 显示全部楼层
看目标文件编码格式
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-4 11:48:41 | 显示全部楼层
wp231957 发表于 2019-7-4 11:05
看目标文件编码格式

是目标文件是什么编码就要用什么编码打开对吧,那我要迭代打开多个文件,有utf-8的,有ASCII码的,有解决方法么,还是我得把所有目标文件统一编码方式?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-13 06:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表