一、JavaScript预定义编码与解码方法
<script> var str = 'HTML5 Free自由者'; str = escape(str); console.log(str); // HTML5%20Free%u81EA%u7531%u8005 str = unescape(str); console.log(str); // HTML5自由者 </script> |
escape()方法是不完全编码的方法,它仅能将字符串中某些字符替换为十六进制的转义序列。就是除了ASCII字母,数字和标点符号
(如
-
、
_
、
.
、
!
、
~
、
*
、
'
、(
、
))
之外,所有字符都被转换为%xx或%uxxxx的转义序列。
URI字符串编码和解码——encodeURI()和decodeURI()
ECMAScript v3.0从标准中删除了
escape()和unescape(),推荐使用
encodeURI()和decodeURI()
<script> var str = 'HTML5 Free自由者'; str = encodeURI(str); console.log(str); // HTML5%20Free%E8%87%AA%E7%94%B1%E8%80%85 str = decodeURI(str); console.log(str); // HTML5 Free自由者
</script>
|
区别:
方法也与escape()方法相同,对于ASCII字母,数字和标点符号
(如
-
、
_
、
.
、
!
、
~
、
*
、
'
、(
、
))
也不会编码。
相对来说encodeURI方法更安全,它能够将字符转换为UTF-8编码字符,然后用十六进制的转义序列(形式为%xx)形成生成的一个、两个或者3个字节的字符编码。
URI组件编码和解码——encodeURIComponent()和decodeURIComponent()
<script> var str= 'http://weibo.com/putins'; str1 = encodeURI(str); console.log(str1); // http://weibo.com/putins str2 = encodeURIComponent(str); console.log(str2); // http%3A%2F%2Fweibo.com%2Fputins str3 = decodeURIComponent(str2); console.log(str3); // http://weibo.com/putins
</script>
|
区别:
同escapeURI()方法相同,encodeURIComponent()方法对于ASCII字母,数字和标点符号(如-、_、.、!、~、*、'、(、))也不会编码,但是对于其他字符(如/、:、#)这样的分隔符URI各种组件的标点符号,都由一个或多个十六进制的转义序列替换。
所谓Unicode编码就是根据字符在Unicode字符表中的编号对字符进行简单的编码,从而实现对信息进行加密。
【略写】
三、自定义加密和解密方法
【略写】