先说问题:最近开始使用python的urllib2和urllib来请求webservice获取数据,但是服务器是java的服务器,发现python传入的参数(中文)在服务器端显示的是乱码,在网上搜索了一整天,终于整出来了,特此填坑。
1.环境:python2.7.10,rhel5.5
2.代码:
import urllib2 import urllib url = "https://www.baidu.com" para1 = {'haha',"哈哈"} #因为有中文,所以用 urllib.quote() para1 = urllib.quote(para1) para = urllib.urlencode(para1) f = urllib2.urlopen(url,data=para) buf = f.read() f.close()
主要函数功能说明:
urllib.quote(string[, safe]):对字符串进行编码。参数 safe 指定了不需要编码的字符。urllib.unquote(string) :对字符串进行解码。
urllib.urlencode(query[, doseq]):将dict或者包含两个元素的元组列表转换成url参数。
注意:java服务器端需要修改部分代码,需要将请求参数进行utf-8解码。