Rumah >hujung hadapan web >tutorial js >Analisis mendalam tentang perbezaan dan contoh kemahiran escape(), encodeURI(), encodeURIComponent()_javascript

Analisis mendalam tentang perbezaan dan contoh kemahiran escape(), encodeURI(), encodeURIComponent()_javascript

WBOY
WBOYasal
2016-05-16 16:40:231143semak imbas

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

Fungsi

escape() 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("&#63;!=()#%&"))
</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(",/&#63;:@&=+$#"))
</script>

Output:

http://www.w3school.com.cn/

http://www.w3school.com.cn/My%20first/

,/&#63;:@&=+$#

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(",/&#63;:@&=+$#"))
</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/&#63;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.

Kenyataan:
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