Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara Mengekodkan Parameter URL dengan Betul dalam Python: Menangani Had `urllib.quote()` dan `urllib.urlencode()`

Cara Mengekodkan Parameter URL dengan Betul dalam Python: Menangani Had `urllib.quote()` dan `urllib.urlencode()`

Barbara Streisand
Barbara Streisandasal
2024-10-26 03:28:03191semak imbas

How to Properly Encode URL Parameters in Python:  Addressing Limitations of `urllib.quote()` and `urllib.urlencode()`

Enkodkan Parameter URL dengan Peratusan Pengekodan dalam Python

Apabila peratus pengekodan parameter URL untuk mengelakkan ralat dan memastikan penormalan yang betul, terbina- dalam fungsi urllib.quote() boleh gagal.

Pengecilan Pengekodan Lalai:

Menggunakan urllib.quote() seperti berikut:

url = "http://example.com?p=" + urllib.quote(query)

Mengabaikan pengekodan aksara penting seperti / kepada /, yang menyebabkan masalah dengan penormalan OAuth.

Kekurangan Sokongan Unikod:

Selain itu, ia gagal mengendalikan rentetan Unicode, mengakibatkan pengecualian apabila cuba mengekod aksara bukan ASCII.

Pengekodan yang dipertingkatkan dengan urllib.parse.quote() dan Parameter selamat:

Untuk menangani had ini, gunakan urllib. parse.quote() daripada Python 3, yang menyediakan penyelesaian:

urllib.parse.quote(string, safe='/', encoding=None, errors=None)

Parameter selamat menjadi lalai kepada '/', tetapi menyatakan rentetan kosong menyahdayakan pengecualian aksara ASCII tambahan, dengan itu memastikan pengekodan yang betul bagi /:

urllib.parse.quote('/test', safe='') # Encodes '/' to '%2F'

Membetulkan Pengendalian Unikod dalam Python 2:

Dalam Python 2, terdapat pepijat pengendalian Unikod dengan urllib.quote(). Untuk mengatasinya, mengekod rentetan secara manual sebagai UTF-8 sebelum menggunakan pengekodan peratus:

query = urllib.quote(u"Müller".encode('utf8'))
print urllib.unquote(query).decode('utf8') # Outputs: Müller

Alternatif: urllib.urlencode()

Untuk pendekatan yang lebih mudah, pertimbangkan untuk menggunakan urllib.urlencode(), yang mengendalikan pengekodan peratus dan Unicode secara automatik:

encoded_params = urllib.urlencode({'p': query}) # Properly encodes '/' and supports Unicode

Atas ialah kandungan terperinci Cara Mengekodkan Parameter URL dengan Betul dalam Python: Menangani Had `urllib.quote()` dan `urllib.urlencode()`. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn