python 中 quote 与 urlencode 的用法与区别

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/"
>>> 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%3D3'
>>> 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%3D3'
>>>
  1. quote对string进行编码,默认 encoding=‘utf-8’ (characters are encoded with UTF-8),errors=‘strict’(如果不能对string进行编码,rasie 引发一个 UnicodeEncodeErrort 错误)。
  2. safe = “/”,说明“/”是安全的,不用进行编码.。
  3. 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'
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章