gpt4 book ai didi

python - curl 命令中文/日文 url 编码

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:04:07 37 4
gpt4 key购买 nike

我想向站点发送一个发布请求。下面的 python 代码工作正常。

# -*- encoding=utf-8 -*-
import urllib, urllib2

url = "http://xxx.com/login.asp"
req = urllib2.urlopen(url, urllib.urlencode({"name":u"汉字".encode('GB2312'),"id":u"12345"}))
print req.read()

但是 bash 代码返回了错误的页面。是编码问题还是其他问题?

url="http://xxx.com/login.asp"
curl --data-urlencode "name=汉字&id=12345" $url

最佳答案

In [4]: urllib.urlencode({"name":"汉字".decode('utf-8').encode('GB2312'),"id":u"12345"})
Out[4]: 'name=%BA%BA%D7%D6&id=12345'

根据 curl 手册页,

--data-urlencode <data>
...
The <data> part can be passed to
curl using one of the following syntaxes:
...
name=content
This will make curl URL-encode the content part and pass that on.
Note that the name part is expected to be URL-encoded already.

由于 curl 会对内容进行 URL 编码,我们需要向它传递一个尚未进行 URL 编码的字符串:

In [7]: urllib.unquote(urllib.urlencode({"name":"汉字".decode('utf-8').encode('GB2312'),"id":u"12345"}))
Out[7]: 'name=\xba\xba\xd7\xd6&id=12345'

因此,尝试

url="http://xxx.com/login.asp"
curl --data-urlencode 'name=\xba\xba\xd7\xd6&id=12345' $url

关于python - curl 命令中文/日文 url 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15918179/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com