Rumah  >  Artikel  >  hujung hadapan web  >  Bercakap tentang perbezaan dan aplikasi kemahiran encodeURI, encodeURIComponent dan escape_javascript

Bercakap tentang perbezaan dan aplikasi kemahiran encodeURI, encodeURIComponent dan escape_javascript

WBOY
WBOYasal
2016-05-16 15:30:061583semak imbas

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)


Parameter charstring yang diperlukan ialah sebarang objek String atau literal untuk dikodkan.

Penerangan


Kaedah melarikan diri mengembalikan nilai rentetan (format Unikod) yang mengandungi kandungan rentetan aksara. Semua ruang, tanda baca, aksen dan aksara bukan ASCII lain digantikan dengan pengekodan %xx,

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

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