当前位置: 代码迷 >> 综合 >> 【python】urlencode、quote、unquote
  详细解决方案

【python】urlencode、quote、unquote

热度:35   发布时间:2023-12-22 03:08:17.0

当url地址含有中文,或者参数有中文的时候,这个算是很正常了,但是把这样的url作为参数传递的时候(最常见的callback),需要把一些中文甚至 “/” 做一下编码转换。
所以对于一些中文或者字符,url不识别的,则需要进行转换,转换结果如下:

一、urlencode

urllib库里面有个urlencode函数,可以把key-value这样的键值对转换成我们想要的格式,返回的是a=1&b=2这样的字符串,比如:

import urllib.parse
values = {
    }
values['from'] = '北京'
values['to'] = '吉林'
data = urllib.parse.urlencode(values)
print(data)

结果如下:

from=%E5%8C%97%E4%BA%AC&to=%E5%90%89%E6%9E%97

补充说明,urlencode()默认是utf8的,有的网页是gbk,可以修改一下,如下:

import urllib.parse
values = {
    }
values['from'] = '北京'
values['to'] = '吉林'
data = urllib.parse.urlencode(values, encoding="gb2312")
print(data)

结果就变成了:

from=%B1%B1%BE%A9&to=%BC%AA%C1%D6

如果只想对一个字符串进行urlencode转换,怎么办?urllib提供另外一个函数:quote()

import urllib.parse
s='长春'
s=urllib.parse.quote(s)
print(s)

输出结果为:

%E9%95%BF%E6%98%A5

二、urldecode

当urlencode之后的字符串传递过来之后,接受完毕就要解码了——urldecode。urllib提供了unquote()这个函数,可没有urldecode()!

s='%E5%B9%BF%E5%B7%9E'
s=urllib.parse.unquote(s)
print(s)

输出结果为:

广州