Rumah > pembangunan bahagian belakang > Tutorial Python > 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
Lepaskan: 2024-10-26 03:28:03
asal
383 orang telah melayarinya

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)
Salin selepas log masuk

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)
Salin selepas log masuk

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'
Salin selepas log masuk

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
Salin selepas log masuk

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
Salin selepas log masuk

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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan