1
pandada8 2013-08-11 10:45:33 +08:00 1
>>> import urllib.parse
>>> urllib.parse.unquote("%D1%A7%C9%FA") 'ѧ��' >>> urllib.parse.unquote("%D1%A7%C9%FA",encoding="gb2312") '学生' >>> param = {"ddlSF":"学生"} >>> urllib.parse.urlencode(param,encoding="gb2312") 'ddlSF=%D1%A7%C9%FA' >>> urllib.request.urlopen("url",data= urllib.parse.urlencode(param,encoding="gb2312").encode("gb2312"))#这里的编码随意…… 不知道你用的什么库,先试试吧 |
2
paicha OP 用的是:import re,urllib,urllib2,cookielib
感谢,我试试看 |
6
paicha OP @kk71 可我还在学着这个教程:http://learnpythonthehardway.org/book/
脚本里是用这处理post的数据的 post_data={ 'xxx':'xxx', 'aaa':'aaa', …… } post_data = urllib.urlencode(post_data) |
7
kk71 2013-08-11 11:12:44 +08:00
@paicha 这本书是介绍py2的啊、http://learnpythonthehardway.org/book/ex0.html 你看
|
8
pandada8 2013-08-11 11:13:52 +08:00 1
@paicha Python2 不熟,不过应该差不多……[被两个库坑出翔]
应该要对 POST 的参数进行 URL 编码[gb2312] >>> urllib2.urlopen("",data = urllib.urlencode(params)) 应该差不多了…… 推荐一下 Requests https://github.com/kennethreitz/requests/ (虽然对于解决这个问题没有很大帮助)Api设计的比标准库好 |
9
paicha OP |
10
pandada8 2013-08-11 11:18:20 +08:00 1
等等不对……
python2的urlencode似乎不支持选择编码…… 快用Python 3吧少年,或者自己写个函数转…… |
11
kk71 2013-08-11 11:23:05 +08:00 1
@paicha py2很多地方有历史遗留问题和妥协。py3是经过梳理之后的语言,用过了就知道好在哪里了呢。期待pypy出py3.3的版本ing……
|
12
paicha OP |