python的url编码问题

python urlencode 编码

urlencode 调用方法

urlencode的参数必须是Dictionary

d= {'par1':'a','par2':'b',}p

rinturllib.urlencode(m)

#par2=b&par1=a

urlencode 编码

函数urlencode不会改变传入参数的原始编码,也就是说需要在调用之前将post或get参数的编码调整好。Python编码转换可以参考 http://www.pythonclub.org/python-basic/codec

问题:现在模拟请求Google和baidu,由于baidu使用的是gb2312编码,google使用的是utf8编码,两个站点提交到URL中的中文参数的urlencode值是不一样,下面以”帝国”为例:

python文件的

# coding: UTF-8

执行urllib.urlencode(“帝国”)得到的结果是:%E5%B8%9D%E5%9B%BD, 此结果说明默认使用 urlencode得到的结果是utf8编码的“帝国”。

现在想得到gb2312编码的“帝国”怎么办呢?

st = u'帝国'

st = st.encode('gb2312')

m = {'par':st,}

s = urllib.urlencode(m)

print s

#结果为par=%B5%DB%B9%FA

---->这个是说把‘帝国’放到url的参数后面

django中urlencode类似,方法如下:

from django.utils.httpimport urlquote

a = urlquote('帝国')

print a

得到汉字的GBK编码

其实可以用urllib的quote函数对URL中的中文进行转换,将中文转换成GBK的编码,得到的编码是符合URI标准的URL。

>>> import urllib>>> a = "帝国"

>>> a'\xb5\xdb\xb9\xfa'

>>> urllib.quote(a)'

%B5%DB%B9%FA'

>>>

转自:http://hi.baidu.com/qiansumiao/blog/item/9e5bf3447803b31f86947361.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值