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'
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章