求助: 关于 request.body 中内容乱码的问题。

2016-03-07 11:31:29 +08:00
 l3rnao
各位巨巨,最近在用 python 做一个分析流量包的活。抓到的流量 request.body 的内容为乱码,无法解码。存在 redis 里,然后在 redis 里面显示的是这种编码:
\u001d\xd6\xfa\xd1\\u0019\x9f1P\xb5\\u001e7\xe5c&\xaa\xbf
请问各位 这是什么编码方式 要怎么解码呢 ?
3746 次点击
所在节点    Python
4 条回复
wdg8106
2016-03-07 11:41:24 +08:00
python 里面有个 chardet 模块,用来处理编码的问题很好用,
比如 :
a = b'haha',调用 chardet.detect(a),就可以输出:
{'confidence': 1.0, 'encoding': 'ascii'}
就可以清楚地看到是什么编码的了
WangYanjie
2016-03-07 11:56:08 +08:00
crayonyi
2016-03-07 12:00:53 +08:00
使用 requests 的时候,注意 2 点,基本可以解决大部分的编码问题:
1. 设置编码为 apparent_encoding

```
rsp = requests.get(url)
rsp.encoding = rsp.apparent_encoding
```

2. 返回使用 text , 而不是 content 或者 body

```
result = rsp.text
```
crayonyi
2016-03-07 12:05:14 +08:00
因为在 python 中都是采用 unicode 编码的,所以如果想存储到数据库、 redis 、文本文件中,需要先转成 utf-8 存储。通用的方法是:存储前先 josn.dumps()处理成字符串 , 取数据的时候,取出用 json.loads()处理一下就 ok

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/261632

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX