1、为什么要进行URL编码?

RFC3986文档规定,Url中只允许包含英文字母(a-zA-Z)、数字(0-9)、-_.~4个特殊字符以及所有保留字符。因此对于Url而言,只有普通英文字符和数字,特殊字符$-_.+!*'()还有保留字符,才能出现在未经编码的Url之中。其他字符均需要经过编码之后才能出现在Url中。

2、Python3对URL编解码

  • 导入 urllib.parse
  • 编码 urllib.parse.quote()
  • 解码 urllib.parse.unquote()

如下所示:

import urllib.parse

hello_world="您好,世界!"

hello_world = urllib.parse.quote(hello_world)

print(hello_world)
# %E6%82%A8%E5%A5%BD%EF%BC%8C%E4%B8%96%E7%95%8C%EF%BC%81

hello_world = urllib.parse.unquote(hello_world)

print(hello_world)
# 您好,世界!

3、urlencode 函数

Url参数字符串中使用key=value键值对这样的形式来传参,键值对之间以&符号分隔,如:https://www.baidu.com/s?wd=python%20url%E7%BC%96%E7%A0%81。但是,在Python里面使用字典来存储key=value键值对,输出格式并不符合Url规范,此时可以利用urlencode函数。urlencode函数的参数是词典,它可以将key-value这样的键值对转换成Url想要的格式,将Url中的键值对以连接符&划分。

import urllib.parse

data = {"name": "张三", "age": 20, "address": "BeiJing"}

data = urllib.parse.urlencode(data)

print(data)

# name=%E5%BC%A0%E4%B8%89&age=20&address=BeiJing

标签: none

添加新评论