Terdapat tiga fungsi dalam JavaScript yang boleh mengekod rentetan, iaitu: escape, encodeURI, encodeURIComponent dan tiga fungsi penyahkodan yang sepadan: unescape, decodeURI, decodeURIComponent.
Berikut ialah pengenalan ringkas kepada perbezaan mereka:
1 fungsi melarikan diri()
Takrif dan penggunaan
Fungsiescape() mengekod rentetan supaya ia boleh dibaca pada semua komputer.
Tatabahasa
melarikan diri(rentetan)
Penerangan Parameter
rentetan Diperlukan. Rentetan untuk dilepaskan atau dikodkan.
Nilai pulangan
Salinan rentetan yang dikodkan. Beberapa aksara ini digantikan dengan urutan pelarian heksadesimal.
Penerangan
Kaedah ini tidak mengekod huruf dan nombor ASCII, juga tidak mengekodkan aksara tanda baca ASCII berikut: - _ . Semua watak lain akan digantikan dengan urutan melarikan diri.
2 fungsi encodeURI()
Takrif dan penggunaan
Fungsi encodeURI() mengekod rentetan sebagai URI.
Tatabahasa
encodeURI(URIstring)
Penerangan Parameter
URIstring Diperlukan. Rentetan yang mengandungi URI atau teks lain untuk dikodkan.
Nilai pulangan
Salinan rentetan URI, dengan beberapa aksara digantikan dengan urutan pelarian heksadesimal.
Penerangan
Kaedah ini tidak mengekod huruf dan nombor ASCII, juga tidak mengekodkan aksara tanda baca ASCII ini: - _ .
Tujuan kaedah ini adalah untuk mengekod URI sepenuhnya, jadi fungsi encodeURI() tidak akan terlepas daripada tanda baca ASCII berikut yang mempunyai makna istimewa dalam URI: ;/?:@&= $, #
3 encodeURIComponent() fungsi
Takrif dan penggunaan
Fungsi encodeURIComponent() mengekod rentetan sebagai komponen URI.
Tatabahasa
encodeURIComponent(URIstring)
Penerangan Parameter
URIstring Diperlukan. Rentetan yang mengandungi komponen URI atau teks lain untuk dikodkan.
Nilai pulangan
Salinan rentetan URI, dengan beberapa aksara digantikan dengan urutan pelarian heksadesimal.
Penerangan
Kaedah ini tidak mengekod huruf dan nombor ASCII, juga tidak mengekodkan aksara tanda baca ASCII ini: - _ .
Aksara lain (seperti :;/?:@&= $,# yang merupakan tanda baca yang digunakan untuk memisahkan komponen URI) digantikan dengan satu atau lebih jujukan pelarian heksadesimal.
Petua dan Nota
Petua: Sila ambil perhatian bahawa fungsi encodeURIComponent() adalah berbeza daripada fungsi encodeURI() kerana fungsi pertama mengandaikan bahawa argumennya adalah sebahagian daripada URI (seperti protokol, nama hos, laluan atau rentetan pertanyaan). Oleh itu, fungsi encodeURIComponent() melarikan diri daripada aksara tanda baca yang digunakan untuk memisahkan bahagian URI.
4 Ringkasan:
Melalui analisis ketiga-tiga fungsi, kita dapat mengetahui bahawa escape() melarikan diri dari semua rentetan masuk kecuali huruf ASCII, nombor dan simbol tertentu Oleh itu, jika anda ingin mengekod URL, sebaiknya Jangan gunakan ini kaedah. Dan encodeURI() digunakan untuk mengekod keseluruhan URI, kerana aksara undang-undang dalam URI tidak akan dikodkan dan ditukar. Kaedah encodeURIComponent hendaklah yang paling biasa digunakan apabila mengekodkan satu URIComponent (merujuk kepada parameter permintaan Ia boleh melepaskan aksara Cina dan khas dalam parameter tanpa menjejaskan keseluruhan URL).
5 Contoh:
1 pelarian()
<script type="text/javascript"> document.write(escape("http://www.w3school.com.cn/") + "<br />") document.write(escape("?!=()#%&")) </script>
Output:
http%3A//www.w3school.com.cn %3F%21%3D%28%29%23%25%26
2 encodeURI()
<script type="text/javascript"> document.write(encodeURI("http://www.w3school.com.cn/")+ "<br />") document.write(encodeURI("http://www.w3school.com.cn/My first/")) document.write(encodeURI(",/?:@&=+$#")) </script>
Output:
http://www.w3school.com.cn/ http://www.w3school.com.cn/My%20first/ ,/?:@&=+$#
Mengekodkan keseluruhan URL, manakala pengecam khusus URL tidak ditranskodkan.
3 encodeURIComponent()
Contoh 1:
<script type="text/javascript"> document.write(encodeURIComponent("http://www.w3school.com.cn/")) document.write("<br />") document.write(encodeURIComponent("http://www.w3school.com.cn/p 1/")) document.write("<br />") document.write(encodeURIComponent(",/?:@&=+$#")) </script>
Output:
http%3A%2F%2Fwww.w3school.com.cn http%3A%2F%2Fwww.w3school.com.cn%2Fp%201%2F %2C%2F%3F%3A%40%26%3D%2B%24%23
Contoh 2:
<script language="javascript">document.write(' <a href="http://passport.baidu.com/?logout&aid=7&u='+encodeURIComponent(" rel="external nofollow" http://cang.baidu.com/bruce42")+'">退出</a>');</script>
Enkodkan parameter dalam URL, kerana parameter tersebut juga merupakan URL Jika tidak dikodkan, ia akan menjejaskan lompatan keseluruhan URL.