javascript對url進行encode的兩種方式
javascript可以使用的內建函式有
encodeURI()
encodeURIComponent()
他們都是用utf-8的編碼方式
encodeURI(),用來encode整個URL,不會對下列字元進行編碼:+ : / ; ?&。它只會對漢語等特殊字元進行編碼
encodeURIComponent (),用來enode URL中想要傳輸的字串,它會對所有url敏感字元進行encode
在對url做encode操作時,一定要根據情況選擇不同的方法。
例如url = 'www.xxx.com/aaa/bbb.do?parm1=羅'
此時可以用encodeURI(url)
當你的引數中包含+ : / ; ?&請使用 encodeURIComponent 方法對這些引數單獨進行編碼。
例如url = 'www.xxx.com/aaa/bbb.do?parm1=www.xxx.com/ccc/ddd?param=abcd'
encodeURI(url)絕對無法滿足要求,因為param1=www.xxx.com/ccc/ddd?param=abcd,這個引數是不能按照我們的要求encode的,
此時應該這樣單獨對引數進行encode
url = 'www.xxx.com/aaa/bbb.do?parm1=' + encodeURIComponen('www.xxx.com/ccc/ddd?param=abcd')
編碼後的url的值為
www.xxx.com/aaa/bbb.do?parm1=www.xxx.com%2Fccc%2Fddd%3Fparam%3Dabcd
此時接受此請求的服務端就能夠成功取得param1=www.xxx.com/ccc/ddd?param=abcd