Rumah >hujung hadapan web >tutorial js >Penjelasan terperinci tentang perbezaan antara fungsi pengekodan rentetan escape(), encodeURI(), dan encodeURIComponent() dalam kemahiran js_javascript

Penjelasan terperinci tentang perbezaan antara fungsi pengekodan rentetan escape(), encodeURI(), dan encodeURIComponent() dalam kemahiran js_javascript

WBOY
WBOYasal
2016-05-16 15:07:101513semak 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 tentang perbezaan mereka

1 fungsi escape()

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 encodeURI() fungsi

Takrif dan penggunaan

Fungsi encodeURI() mengekod rentetan sebagai URI.


Tatabahasa

encodeURI(URIstring)


Penerangan Parameter

urirentetan 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 aksara tanda baca ASCII berikut yang mempunyai makna istimewa dalam URI: ;/?:@&=+$ ,#


3 fungsi encodeURIComponent()

Takrif dan penggunaan

Fungsi encodeURIComponent() mengekod rentetan sebagai komponen URI.


Tatabahasa

encodeURIComponent(URIstring)


Penerangan Parameter

urirentetan 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 :;/?:@&=+$,# 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() 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 boleh mengetahui bahawa: escape(), sebagai tambahan kepada huruf ASCII, nombor dan simbol tertentu, melarikan diri dari semua rentetan yang dihantar masuk. Oleh itu, jika anda ingin mengekod URL, ia adalah terbaik untuk Jangan gunakan kaedah ini. 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>输出:
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>输出:
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输出:
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("http://cang.baidu.com/bruce42")+'">退出</a>');</script>
Ekodkan 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