python27读一个UTF-8编码文件,但有些字节不在UTF8范围内会报错,大家如何解决的?

隐身 2014-05-13 05:50:30
有个文本文件确认是UTF8编码的,但文件中有一些字节不在UTF8范围内,用python读就报错了。
像这样的文件,就没法处理了吗?


f = codecs.open('filename', 'r', 'utf-8')
buf = f.read() #报错了,提示
#UnicodeDecodeError: 'utf8' codec can't decode byte 0xa7 in position 232629: invalid start byte
...全文
559 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
隐身 2014-05-27
  • 打赏
  • 举报
回复 1
引用 6 楼 tgbus18990140382 的回复:
问题搞定了没?我也遇到了,QScintilla读取utf-8报错的问题,如果解决了求解决办法啊。
换了种方法,直接open()读了自己解析的, codecs模块要求编码必须一至,要不然就报错。
唯夜 2014-05-17
  • 打赏
  • 举报
回复
问题搞定了没?我也遇到了,QScintilla读取utf-8报错的问题,如果解决了求解决办法啊。
angel_su 2014-05-15
  • 打赏
  • 举报
回复
设置合适的errors参数...
隐身 2014-05-15
  • 打赏
  • 举报
回复
引用 2 楼 tgbus18990140382 的回复:
在你的脚本前面加上这几句试试
#!/usr/bin/python
#encoding=utf-8

import sys
reload(sys)
sys.setdefaultencoding("utf-8")
这样也不行,关键问题是codecs处理UTF-8格式时,必须保证文本全按UTF8编码,要有个其它编码的就崩了。
隐身 2014-05-15
  • 打赏
  • 举报
回复
引用 1 楼 snmr_com 的回复:
你确定这个文本是utf-8么?utf-8是全编码,目前没有字符不在其范围内的 utf-8每个字符第一个字节最高两位一定是11开头,所以最小值也是c0,不会是a7
除了这个地方,其他地方还是确认是UTF-8的。
ImN1 2014-05-14
  • 打赏
  • 举报
回复
你确定这个文本是utf-8么?utf-8是全编码,目前没有字符不在其范围内的 utf-8每个字符第一个字节最高两位一定是11开头,所以最小值也是c0,不会是a7
唯夜 2014-05-14
  • 打赏
  • 举报
回复
在你的脚本前面加上这几句试试
#!/usr/bin/python
#encoding=utf-8

import sys
reload(sys)
sys.setdefaultencoding("utf-8")

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧