urlencode(编码)函数以及urlencode(解码)函数是位于urllib库下面的parse模块下面的函数,一个用来编码一个用来解码。
一、编码urlencode或者quote
urlencode()函数原理就是首先把中文字符转换为十六进制,然后在每个字符前面加一个标识符%。
在url中如果出现一些中文或者字符,url不识别的,则需要进行转换,使用urllib库中的urlencode函数,可以把key-value这样的
键值对转换成我们想要的格式,返回的是a=1&b=2这样的字符串,比如:
代码示例
from urllib import request
from urllib import parse
params={'name':'Demo',"age":18}
qs=parse.urlencode(params)
print(qs)
如果只想对一个字符串进行urlencode转换,怎么办?urllib提供另外一个函数:quote()
from urllib import request
from urllib import parse
s=parse.quote('西安')
print(s)
二、解码unquote()或者parse_qs函数
unquote()函数与urlencode()函数原理相反,用于解码已编码的 URL 字符串,其原理就是把十六进制字符串转换为中文字符
当urlencode之后的字符串传递过来之后,接受完毕就要解码了——urldecode。urllib提供了unquote()这个函数,可没有
urldecode()函数!
代码示例:
from urllib import parse
s='%E5%B9%BF%E5%B7%9E'
s=parse.unquote(s)
print(s)
parse_qs函数:
可以将经过编码后的url参数进行解码。示例代码如下:
from urllib import parse
qs = "name=%E7%88%AC%E8%99%AB%E5%9F%BA%E7%A1%80&greet=hello+world&age=100"
print(parse.parse_qs(qs))