quote:
- quote 对非ASCII编码的字符进行编码,默认进行UTF-8编码,不对“/”进行编码
- 一般对请求url路径中非ASCII编码的字符(string)进行编码
# quote 函数在 urllib.parse中:
function quote in module urllib.parse:
# quote 函数的定义
quote(string, safe='/', encoding=None, errors=None)
# url 中保留的字符:
reserved = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" |
"$" | ","
- url 请求链接不能包含非ASCII编码的字符,非ASCII编码的字符被认为是不安全的,所以进行编码。
>>> from urllib.parse import quote
>>> url = "http://www.baidu.com/?name=jack&age=29"
>>> quote(url)
'http%3A//www.baidu.com/%3Fname%3Djack%26age%3D29'
>>> quote(url,safe=";/?:@&=+$,")
'http://www.baidu.com/?name=jack&age=29'
>>> from urllib.parse import quote
>>> url = "http://www.baidu.com/"
>>> qeury = "python入门到精通?数量=3"
>>> quote(qeury,safe=";/?:@&=+$,")
'python%E5%85%A5%E9%97%A8%E5%88%B0%E7%B2%BE%E9%80%9A?%E6%95%B0%E9%87%8F=3'
>>> url = url +quote(qeury,safe=";/?:@&=+$,")
>>> url
'http://www.baidu.com/python%E5%85%A5%E9%97%A8%E5%88%B0%E7%B2%BE%E9%80%9A?%E6%95%B0%E9%87%8F=3'
>>>
- quote对string进行编码,默认 encoding=‘utf-8’ (characters are encoded with UTF-8),errors=‘strict’(如果不能对string进行编码,rasie 引发一个 UnicodeEncodeErrort 错误)。
- safe = “/”,说明“/”是安全的,不用进行编码.。
- url 中保留的字符:在url 中都认为是安全的可以不进行编码,safe包含的字符都不会被编码。
urlencode:
- urlencode 对字典或由两元素元组组成的列表进行码编码,将其转换为符合url规范的查询字符串
>>> from urllib.parse import urlencode
>>> urlencode([("number",1)])
'number=1'
>>> urlencode([("数量",1),("number",1)])
'%E6%95%B0%E9%87%8F=1&number=1'
>>>
>>> urlencode({"数量": 1, "number": 1})
'%E6%95%B0%E9%87%8F=1&number=1'