Rumah >hujung hadapan web >tutorial js >Bercakap tentang perbezaan dan aplikasi kemahiran encodeURI, encodeURIComponent dan escape_javascript
Pertama sekali, kita semua tahu bahawa ketiga-tiga perkara ini digunakan untuk pengekodan Mari kita bincangkan tentang encodeURI() dan encodeURIComponent().
Jika ada pengekodan, akan ada penyahkodan ialah decodeURI() dan decodeURIComponent() Penggunaannya sangat mudah. Hanya bawa teks untuk ditranskodkan ke dalam parameter untuk mencapai tujuan
Contohnya:
encodeURI("Saya ialah teks yang akan dikodkan")
decodeURI("Saya ialah teks yang akan dinyahkodkan")
encodeURIComponent("Saya ialah teks yang akan dikodkan")
decodeURIComponent("Saya ialah teks yang akan dinyahkodkan")
Perbezaan antara encodeURI() dan encodeURIComponent() sebenarnya tidak besar
Perbezaan utama ialah:
encodeURI mempunyai 82 aksara tidak dikodkan: !, #, $, &, ', (,), *, ,,, -,.,/,:,;,=,?,@,_,~, 0-9, a-z, A-Z
encodeURIComponent mempunyai 71 aksara tidak dikodkan: !, ', (,), *, -, ., _, ~, 0-9, a-z, A-Z
encodeURI digunakan terutamanya apabila memberikan nilai terus ke bar alamat:
location.href=encodeURI("http://www.cnblogs.com/Tezml/");
Dan encodeURIComponent digunakan terutamanya untuk parameter pertanyaan url:
location.href="http://www.cnblogs.com/Tezml/test.php?a=" encodeURIComponent("Saya adalah siapa saya");
Dan melarikan diri, berbanding dua di atas, adalah berbeza
escape() ialah pengekodan, unescape() ialah penyahkodan;
kaedah melarikan diri
Enkodkan objek String supaya ia boleh dibaca pada semua komputer,melarikan diri(charString)
Penerangan
Di mana xx adalah sama dengan nombor perenambelasan yang mewakili aksara. Sebagai contoh, ruang dikembalikan sebagai " ".
Nilai aksara lebih daripada 255 disimpan dalam format %uxxxx.
Terdapat 69 aksara yang tidak dikodkan oleh escape: *, ,-,.,/,@,_,0-9,a-z,A-Z
Perhatikan bahawa kaedah melarikan diri tidak boleh digunakan untuk mengekod Pengecam Sumber Seragam (URI). Ia harus dikodkan menggunakan kaedah encodeURI dan encodeURIComponent.
Demo terakhir tentang pengekodan dan penyahkodan
<!DOCTYPE html> <html> <head> <title>Tezml_编码解码测试</title> <meta charset="utf-8"> <meta name="author" content="Tezml" /> <meta name="copyright" content="Tezml" /> <meta name="description" content="Tezml" /> <script type="text/javascript" src="http://cdn.bootcss.com/jquery/1.11.2/jquery.min.js"></script> </head> <body> <div id="wz1"></div> <div id="wz2"></div> <div id="wz3"></div> <div id="wz4"></div> <div id="wz5"></div> <div id="wz6"></div> <div id="wz7"></div> <div id="wz8"></div> <div id="wz9"></div> <div id="wz10"></div> <div id="wz11"></div> <div id="wz12"></div> </body> <script type="text/javascript"> var chinese="请叫我中文" var english="place tall me englash" var Monster=":#&$/@" $("#wz1").html(encodeURI(chinese))//编码 %E8%AF%B7%E5%8F%AB%E6%88%91%E4%B8%AD%E6%96%87 $("#wz2").html(decodeURI(chinese))//解码 请叫我中文 $("#wz3").html(encodeURI(english))//编码 place%20tall%20me%20englash $("#wz4").html(decodeURI(english))//解码 place tall me englash $("#wz5").html(encodeURIComponent(Monster))//编码 %3A%23%26%24%2F%40 $("#wz6").html(encodeURI(Monster))//编码 :#&$/@ $("#wz7").html(escape(chinese))//编码 %u8BF7%u53EB%u6211%u4E2D%u6587 $("#wz8").html(escape(english))//编码 place%20tall%20me%20englash $("#wz9").html(escape(Monster))//编码 %3A%23%26%24/@ $("#wz10").html(unescape(chinese))//编码 请叫我中文 $("#wz11").html(unescape(english))//编码 place tall me englash $("#wz12").html(unescape(Monster))//编码 :#&$/@ </script> </html>
Ringkasan
escape() tidak boleh digunakan secara langsung untuk pengekodan URL Fungsi sebenar adalah untuk mengembalikan nilai pengekodan Unikod bagi aksara. Sebagai contoh, hasil pengembalian "Festival Musim Bunga" ialah %u6625%u8282, dan pengekodan "" adalah salah digunakan terutamanya untuk pengekodan aksara Cina dan penggunaannya tidak lagi disyorkan.encodeURI() ialah fungsi dalam Javascript yang sebenarnya digunakan untuk mengekod URL. Seluruh alamat url dikodkan, tetapi simbol dengan makna khas "; / ? : @ & = $ , #" tidak dikodkan. Fungsi penyahkodan yang sepadan ialah: decodeURI().
encodeURIComponent() boleh mengekod aksara khas "; / ? : @ & = $ , #". Fungsi penyahkodan yang sepadan ialah decodeURIComponent().
Jika anda ingin menghantar URL dengan ampersand, gunakan encodeURIComponent()