首頁  >  文章  >  後端開發  >  如何在 Python 中正確編碼 URL 參數?

如何在 Python 中正確編碼 URL 參數?

DDD
DDD原創
2024-10-27 07:00:03961瀏覽

How to Properly Encode URL Parameters in Python?

在 Python 中編碼 URL 參數

URL 通常包含需要編碼的參數,以防止錯誤並保持相容性。在 Python 中,urllib.quote() 函式通常用於此目的。但是,它有一定的限制:

  • 編碼不完整: urllib.quote() 無法對「/」字元進行編碼,這可能會破壞 OAuth 規範化。
  • Unicode 支援問題: 嘗試處理 Unicode 字串時會引發異常。

使用urllib.parse.quote() 改進編碼

Python 3 文件建議使用urllib.parse.quote():

Python 3 文件建議使用urllib.parse.quote():
<code class="python">urllib.parse.quote(string, safe='/', encoding=None, errors=None)</code>

<code class="python">>>> import urllib.parse
>>> urllib.parse.quote('/test', safe='')
'%2Ftest'</code>
此函數透過允許附加字元的規範保持不帶引號來提供更好的編碼。缺省情況下,安全參數包含“/”。為安全傳遞空字串解決了第一個問題:

Unicode 處理

<code class="python">>>> query = urllib.quote(u"Müller".encode('utf8'))
>>> print urllib.unquote(query).decode('utf8')
Müller</code>
Unicode 支援的第二個問題已在 Python 3 中修復。對於Python 2 ,您可以將Unicode 字串編碼為UTF-8 來解決此問題:

替代方法:urlencode()

<code class="python">>>> import urllib.parse
>>> params = urllib.parse.urlencode({'name': 'John Doe'})
'name=John+Doe'</code>
為了方便起見,請考慮使用urlencode( )而不是手動對每個參數進行百分比編碼。它自動編碼鍵值對,支援 Unicode 和自訂分隔符號:

以上是如何在 Python 中正確編碼 URL 參數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn