解决python错误 UnicodeDecodeError: 'gb2312' codec can't decode byte 0x8b in position 1: illegal multibyt
报错的代码:
url= 'http://kaijiang.500.com/shtml/ssq/19001.shtml'
page =urllib.request.urlopen(url)
content = page.read().decode('gb2312')
报这个错的原因是获取到的网页内容是经过压缩了的,打开url可以看到请求head
Accept-Encoding:gzip, deflate
一种方式是请求时把Accept-Encoding设为空,这样的话网页数据未压缩,会相对比较大,增加网络传输时间
另一种方式就是对请求后的数据解压,显然这个方式处理会更快,如下
content = gzip.decompress(page.read()).decode('gb2312')
可是修改之后发现运行还是报错,这时候发现应该是因为网页中含有编码集之外的字符(网页内容指定charset是gb2312),就算加到更大范围还是报错(PS:汉字字符集范围 gb2312 < gbk < gb18030)
这时候选择忽略这些无法解码的字符
content = gzip.decompress(page.read()).decode('gb2312','ignore')
再运行代码,发现这个问题已经解决了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
2015-08-21 对比两个实体类属性值的差异
2009-08-21 从零开始学习jQuery (五) 事件与事件对象【转】
2009-08-21 从零开始学习jQuery (四) 使用jQuery操作元素的属性与样式【转】
2009-08-21 从零开始学习jQuery (三) 管理jQuery包装集【转】
2009-08-21 从零开始学习jQuery (二) 万能的选择器【转】
2009-08-21 从零开始学习jQuery (一) 开天辟地入门篇【转】