-
escape 和 unescape
escape()
不能直接用于URL
編碼标捺,它的真正作用是返回一個字符的Unicode
編碼值
采用unicode
字符集對指定的字符串除0-255
以外進行編碼懊纳。所有的空格符、標點符號亡容、特殊字符以及更多有聯(lián)系非ASCII
字符都將被轉(zhuǎn)化成%xx
格式的字符編碼(xx
等于該字符在字符集表里面的編碼的16進制數(shù)字)嗤疯。比如,空格符對應的編碼是%20
闺兢。
escape
不編碼字符有69個:*茂缚,+,-屋谭,.脚囊,/,@桐磁,_悔耘,0-9,a-z我擂,A-Z
var url = "http://localhost:8080/pro?a=1&b=張三&c=aaa"; escape(url) => http%3A//localhost%3A8080/pro%3Fa%3D1%26b%3D%u5F20%u4E09%26c%3Daaa
-
encodeURI 和 decodeURI
把URI
字符串采用UTF-8
編碼格式轉(zhuǎn)化成escape
各式的字符串衬以。
encodeURI
不編碼字符有82個:!,#校摩,$看峻,&,'衙吩,(互妓,),*,+冯勉,,澈蚌,-,.珠闰,/惜浅,:瘫辩,;伏嗜,=,?伐厌,@承绸,_,~挣轨,0-9军熏,a-z,A-Z
encodeURI()
用于整個url
編碼var url = "http://localhost:8080/pro?a=1&b=張三&c=aaa"; encodeURI(url) --> http://localhost:8080/pro?a=1&b=%E5%BC%A0%E4%B8%89&c=aaa
-
encodeURIComponent 和 decodeURIComponent
與encodeURI()
的區(qū)別是卷扮,它用于對URL
的組成部分進行個別編碼荡澎,而不用于對整個URL
進行編碼
因此热监,; / ? : @ & = + $ , #
這些在encodeURI()
中不被編碼的符號危喉,在encodeURIComponent()
中統(tǒng)統(tǒng)會被編碼。至于具體的編碼方法铐尚,兩者是一樣鞭铆。把URI
字符串采用UTF-8
編碼格式轉(zhuǎn)化成escape
格式的字符串
encodeURIComponent()
用于參數(shù)的傳遞或衡,參數(shù)包含特殊字符可能會造成間斷encodeURIComponent('http://www.baidu.com?name=zhang@xiao@jie&order=1') 結(jié)果:"http%3A%2F%2Fwww.baidu.com%3Fname%3Dzhang%40xiao%40jie%26order%3D1"
參考
http://www.ruanyifeng.com/blog/2010/02/url_encoding.html
https://blog.csdn.net/u010227042/article/details/121602886
https://segmentfault.com/a/1190000010735689