Python3 使用requests请求,解码时出错:'utf8' codec can't decode byte 0x83 in position 1: invalid start byte
2024-10-10 10:11:30
requests请求的响应内容能够通过几个属性获得:
response.text
为解码之后的内容,解码会根据响应的HTTP Header中的Content-Type选择字符集。例如
1
|
"'Content-Type': 'text/html;charset=UTF-8'" |
就会使用“UTF-8”解码。可通过访问response.encoding获得当前使用的字符集。
也可修改使用的字符集
1
|
response.encoding = 'UTF-8' |
这样再次调用response.text的时候,会返回UTF-8解码的内容。
response.content
为二进制内容,并且已经自动对传输中使用的gzip和deflate编码进行了解码。
response.raw
为原始的响应内容,可以用来做一些分析。只是需要在初始化的时候加上参数stream=True,不然获取到的值为b''。但需要注意的是,添加参数(stream=True)之后,text和content都不能使用了。。。都会报错:
1
|
requests.exceptions.ChunkedEncodingError: ( 'Connection broken: IncompleteRead(102 bytes read)' , IncompleteRead(102 bytes read )) |
response.json()
这一般用于已知返回数据格式为JSON字符串的情况。如果返回的是不可用的JSON数据会抛出异常:
1
|
ValueError: No JSON object could be decoded |
回到遇到的问题上来:
1
|
'utf8' codec can't decode byte 0x83 in position 1: invalid start byte |
该问题发生在调用response.content.decode()时。
解决办法:
1. 去掉请求HTTP Header中的gzip:
1
|
"accept-encoding": "gzip, deflate, br", |
2. 对原始内容进行gzip解压处理
最新文章
- python fabric install
- RDIFramework.NET ━ 9.9 角色权限管理 ━ Web部分
- Word Ladder II
- Camera 幻灯片播放
- oracle批量导出AWR报告
- linux make clean
- O-C相关06:self和super关键字介绍——self关键字
- HDU 5791 Two
- Make Yahoo! Web Service REST Calls With C#
- Android该系统提供的服务--Vibrator(振子)
- crawler_phantomjs_windows_linux下demo
- spring-framework-reference阅读笔记(一)
- 从实践的角度理解cookie的几个属性
- 常用七大经典排序算法总结(C语言描述)
- delphi Ctrl+鼠标左键或者Find Declaration不能定位到源文件
- 从分治算法到 Hadoop MapReduce
- stm32-arduino-f103
- C#学习笔记(35)——事件做的登录案例
- js 正则判断字符串下划线的长度
- Cracking The Coding Interview 4.1
热门文章
- Flutter for web
- Dart: 执行shell命令
- TYLER ADAMS BRADBERRY的私人投资分享
- django学习-10.django连接mysql数据库和创建数据表
- Java自学第2期——注释、数据类型、运算符、方法
- JQuery:JQuery基本语法,JQuery选择器,JQuery DOM,综合案例 复选框,综合案例 随机图片
- vue之下拉菜单Dropdown的使用
- 博客数据库要连接Elasticsearch,使用MySQL还是MongoDB更合理
- Java 程序员每天都在做什么?
- jQuery实现游戏推荐