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
314 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!

sumber:php.cn
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