payload = dict(key1=u'测试'.encode('utf-8'), key2='端口')
r = requests.post('http://httpbin.org/post', data=payload)
print('参数:',payload)
r = requests.post('http://httpbin.org/post', data=payload)
print('Text:',r.text,'\nJSON:',r.json(),'\n ',r.encoding)
Python3.3 执行结果如下, Text 里面的怎么才能变中文, JSON 为什么是中文?
参数: {'key1': '测试', 'key2': '一点'}
b'key1=%E6%B5%8B%E8%AF%95&key2=%E4%B8%80%E7%82%B9'
Text: {
"args": {},
"data": "",
"files": {},
"form": {
"key1": "\u6d4b\u8bd5",
"key2": "\u4e00\u70b9"
},
"headers": {
"Accept": "/",
"Accept-Encoding": "gzip, deflate",
"Content-Length": "47",
"Content-Type": "application/x-www-form-urlencoded",
"Host": "httpbin.org",
"User-Agent": "python-requests/2.8.1"
},
"json": null,
"origin": "180.136.206.59",
"url": "http://httpbin.org/post"
}
JSON: {'json': None, 'args': {}, 'headers': {'Host': 'httpbin.org', 'Accept-Encoding': 'gzip, deflate', 'Accept': '/', 'User-Agent': 'python-requests/2.8.1', 'Content-Length': '47', 'Content-Type': 'application/x-www-form-urlencoded'}, 'files': {}, 'origin': '180.136.206.59', 'url': 'http://httpbin.org/post', 'form': {'key1': '测试', 'key2': '一点'}, 'data': ''}
None
1
em3rge 2016-03-06 18:45:05 +08:00
json.loads(r.text)就行了, requests 的 json 也是这么做的 https://github.com/kennethreitz/requests/blob/b32c3bc10f0fb4075b6a282b283418f5290e812a/requests/models.py#L785
|
2
linyucc2 OP 大神,我调我们公司的一个 JAVA 的 HTTP 接口,传入的参数里面有中文,进入到他们接口里面中文全变成 ???之类的,知道什么原因吗?
|
3
linyucc2 OP 我试了好多编码 都不行
|
4
hayao650 2016-03-06 21:02:03 +08:00 via Android
用 urllib2 试试
|
5
crayonyi 2016-03-07 12:09:02 +08:00
你在脚本最前面加上
# -*- coding: utf-8 -*- import sys reload(sys) sys.setdefaultencoding('utf8') 然后所有中文都用引号括起来,不需要编码或者加 u ,大部分问题都解决了 |