对单个字符串编码
from urllib.parse import quote, unquote
# 编码
print(quote("美国"))
# %E7%BE%8E%E5%9B%BD
# 解码
print(unquote("%E7%BE%8E%E5%9B%BD"))
# 美国
对key-value字典数据编码
from urllib.parse import unquote, urlencode
data = {
"name": "Tom",
"country": "美国",
"age": 23
}
# 编码
print(urlencode(data))
# name=Tom&country=%E7%BE%8E%E5%9B%BD&age=23
# 解码
print(unquote("name=Tom&country=%E7%BE%8E%E5%9B%BD&age=23"))
# name=Tom&country=美国&age=23
自定义实现url解码
tip: urllib库没有提供 urldecode 函数
# 将查询字符串转为dict字典数据类型
def urldecode(query):
item = {}
for key_value in unquote(query).split("&"):
key, value = key_value.split("=")
item[key] = value
return item
print(urldecode("name=Tom&country=%E7%BE%8E%E5%9B%BD&age=23"))
# {'name': 'Tom', 'country': '美国', 'age': '23'}