手把手教你: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”)

你可能感兴趣的:(python,编码,gbk,Codec,python读取htm崩溃)