V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
linyucc2
V2EX  ›  Python

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

  •  
  •   linyucc2 · 2016-03-06 18:06:44 +08:00 · 2327 次点击
    这是一个创建于 3180 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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

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

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

    然后所有中文都用引号括起来,不需要编码或者加 u ,大部分问题都解决了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1175 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 18:50 · PVG 02:50 · LAX 10:50 · JFK 13:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.