Python post 中文的问题,求高人指点

2016-03-06 18:06:44 +08:00
 linyucc2

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

2351 次点击
所在节点    Python
5 条回复
em3rge
2016-03-06 18:45:05 +08:00
linyucc2
2016-03-06 19:04:35 +08:00
大神,我调我们公司的一个 JAVA 的 HTTP 接口,传入的参数里面有中文,进入到他们接口里面中文全变成 ???之类的,知道什么原因吗?
linyucc2
2016-03-06 19:05:42 +08:00
我试了好多编码 都不行
hayao650
2016-03-06 21:02:03 +08:00
用 urllib2 试试
crayonyi
2016-03-07 12:09:02 +08:00
你在脚本最前面加上

# -*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf8')

然后所有中文都用引号括起来,不需要编码或者加 u ,大部分问题都解决了

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

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

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

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

© 2021 V2EX