1、escape()
escape()是js编码函数中最古老的一个。虽然这个函数现在已经不提倡使用了,但是由于历史原因,很多地方还在使用它,所以有必要先从它讲起。
实际上,escape()不能直接用于URL编码,它的真正作用是返回一个字符的Unicode编码值。比如“测试”的返回结果是%u6D4B%u8BD5。
该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: * @ - _ + . / 。其他所有的字符都会被转义序列替换。
例如:
<script>
document.write(escape("测试"));//<span style="font-family: Simsun;">%u6D4B%u8BD5</span>
</script>
2、encodeURI()
它着眼于对整个URL进行编码,因此除了常见的符号以外,对其他一些在网址中有特殊含义的符号“; / ? : @ & = + $ , #”,也不进行编码。编码后,它输出符号的utf-8形式,并且在每个字节前加上%。
例如:
<script>
document.write(encodeURI("测试"));//<span style="color: rgb(68, 68, 68); font-family: Simsun; line-height: 26.6px; background-color: rgb(252, 252, 250);">%E6%B5%8B%E8%AF%95</span>
</script>
3、encodeURIComponent()
最后一个Javascript编码函数是encodeURIComponent()。与encodeURI()的区别是,它用于对URL的组成部分进行个别编码,而不用于对整个URL进行编码。因此,“; / ? : @ & = + $ , #”,这些在encodeURI()中不被编码的符号,在encodeURIComponent()中统统会被编码。至于具体的编码方法,两者是一样。
例如:
<span style="font-size:14px;"><script>
document.write(encodeURIComponent("测试&="));//%E6%B5%8B%E8%AF%95%26%3D
</script></span>