Apabila membina URL daripada rentetan yang berbeza-beza, pembangun mempunyai dua pilihan pengekodan: urlencode() dan rawurlencode(). Artikel ini menyelidiki perbezaan penting antara kedua-dua fungsi untuk memberikan panduan tentang penggunaannya yang sesuai.
rawurlencode: A String Transformed with RFC Adherence
rawurlencode mematuhi spesifikasi digariskan dalam kedua-dua RFC 1738 (pra-PHP 5.3.0) dan RFC 3986 (pasca PHP 5.3.0). Ia menggantikan aksara bukan abjad angka dengan " " dan dua digit heksadesimal. Kaedah pengekodan ini melindungi aksara literal daripada salah tafsir sebagai pembatas URL dan melindungi URL daripada penukaran aksara yang mungkin berlaku semasa penghantaran.
urlencode: Berlepas dari RFC dengan Pengekodan Tanda Tambah
urlencode, sebaliknya, berlepas daripada pematuhan RFC dalam satu cara tertentu: ia mengekod ruang sebagai tanda " " sebaliknya daripada " ," teknik pengekodan yang konsisten dengan penyiaran data daripada borang WWW.
Bila Menggunakan Yang Mana
Pilihan yang sesuai antara urlencode dan rawurlencode bergantung pada tujuan yang dimaksudkan. Jika kesalingoperasian dengan sistem lain adalah yang terpenting, rawurlencode muncul sebagai pilihan pilihan. Walau bagaimanapun, untuk sistem warisan yang mengharapkan rentetan pertanyaan yang dikodkan dalam bentuk yang mana ruang dikodkan sebagai " " dan bukannya " ," urlencode kekal sebagai pilihan yang diperlukan.
Nuansa RFC
Perlu diperhatikan perbezaan halus antara RFC 1738 dan RFC 3986 dalam konteks rawurlencode. Sebelum PHP 5.3, rawurlencode diselaraskan dengan RFC 1738, yang memerlukan pengekodan aksara tilde (~). Walau bagaimanapun, dari PHP 5.3 dan seterusnya, fungsi ini mematuhi RFC 3986, yang menganggap pengekodan tilde tidak diperlukan.
Pertimbangan Tambahan
RFC 2396 memberikan cerapan lanjut tentang sintaks URI yang sah. Yang penting, ia mengenal pasti " " sebagai aksara terpelihara dalam rentetan pertanyaan, yang memerlukan pengekodannya mengikut RFC 3986. Oleh itu, rawurlencode kekal sebagai kaedah pengekodan pilihan apabila mematuhi RFC 2396.
Atas ialah kandungan terperinci Keanehan Pengekodan URL: Bilakah Saya Perlu Menggunakan `urlencode` lwn. `rawurlencode`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!