python 2、python读取.htm文件报错:UnicodeDecodeError: 'utf8' codec can't decode byte 0xb3 in position 0的解决方法

问题是这样的:我用python写的程序去读取.htm文件中的数据,刚开始我用:fr = open("0.htm" , "r")时,程序运行后直接崩溃,后来根据提示的错误信息:ValueError encoding must be one of 'utf_8','big5', or 'gbk'.,因此我用codecs改写成如下形式:

- coding: utf-8 -

import sys
reload(sys)
sys.setdefaultencoding("utf-8")
import codecs
fr = codecs.open(“0.htm” ,”r” , “utf-8”)
至少把打0.htn程序就崩溃的问题解决了。
但是读取文件中的内容的时候:
读到含有中文的某一行内容,程序直接奔溃了:这一行内容如下:

.....-ActiveX
错误提示如下:
UnicodeDecodeError: 'utf8' codec can't decode byte 0xb3 in position 0: invalid start byte

我的0.htm文件中的编码如下:

 

原因:

 

0.htm文件中的编码如下:
<html>
<head>
<meta http-equiv="Content-Language" content="zh-cn">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
它的字符集是:gb2312

因此必须用gbk编码的方式去读取

 

 

解决方法:

 

用"utf-8"不能解码,用"gbk"

fr = codecs.open(“0.htm” ,”r” , “gbk”)

 

 

 

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值