Dalam konteks menghantar rentetan pertanyaan ke pelayan web, kaedah pengekodan yang sesuai bergantung pada keperluan pengekodan khusus.
Fungsi escape() tidak boleh digunakan, kerana ia telah ditamatkan dalam spesifikasi ECMAScript. Ia mengekod semua aksara khas kecuali @, _, *, , dan -.
Gunakan encodeURI() apabila anda memerlukan URL berfungsi. Ia mengekod semua aksara kecuali yang dikhaskan untuk URL. Aksara simpanan ini termasuk /, &, ?, :, dan @.
Gunakan encodeURIComponent() apabila anda ingin mengekod nilai parameter URL. Ia mengekod semua aksara kecuali yang dinyatakan secara jelas sebagai tidak terpelihara. Aksara tidak terpelihara ini termasuk /, ?, :, dan @.
Contoh:
Untuk mengekod rentetan pertanyaan berikut:
http://www.example.org/a file with spaces.html
Anda akan menggunakan encodeURI() untuk mendapatkan URL yang dikodkan berikut:
http://www.example.org/a%20file%20with%20spaces.html
Walau bagaimanapun, jika anda ingin mengekod nilai parameter dalam rentetan pertanyaan, anda akan menggunakan encodeURIComponent():
var p1 = encodeURIComponent("http://example.org/?a=12&b=55")
Nilai parameter yang dikodkan yang terhasil kemudiannya boleh dilampirkan pada URL asas untuk membentuk URL lengkap:
var url = "http://example.net/?param1=" + p1 + "¶m2=99"
Ini akan menghasilkan URL yang dikodkan lengkap berikut:
http://example.net/?param1=http%3A%2F%2Fexample.org%2F%Ffa%3D12%26b%3D55¶m2=99
Adalah penting untuk ambil perhatian bahawa encodeURIComponent() tidak mengekod aksara ', yang boleh membawa kepada kelemahan keselamatan jika tidak dikendalikan dengan betul semasa membina atribut HTML.
Atas ialah kandungan terperinci Melarikan diri, encodeURI atau encodeURIKomponen: Bila Untuk Menggunakan Yang Mana untuk Pengekodan Rentetan Pertanyaan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!