escape,encodeURI與encodeURIComponent 的使用與差異
- 詳細內容
- 分類:Javascript
- 發佈:2012-12-15, 週六 02:00
- 點擊數:4425
escape()、encodeURI()、encodeURIComponent ()都是用來對字串做編碼,以利於在網路上傳遞。
escape() :
escape()是個全域函式,可以在javascript程式的任何地方呼叫它。使用16進制替字串重新編碼,
解碼時使用unescape()函式。escape()當初存在的目的是為了字串的可攜性,
讓字串能夠在所有支援ASCII碼的電腦上傳遞。也有將字串編碼為適合URL格式的功能。
但是escape()本身有些缺陷,已經被列為廢棄的函式,不建議使用。
語法:
escape(string);
string:需要被編碼的字串。
返回值:一個已編碼的字串。
escape()不會對下面字符做編碼:
ASCII碼 數字 * @ - _ + . /
例:
document.write(escape("welcome to vic's blog"));
輸出==>wellcome%20to%20vic%27s%20blog
document.write(escape("!#%&?=()"));
輸出==>%21%23%25%26%3F%3D%28%29
encodeURI():
encodeURI()也是個全域函式,用來將(包含非法字元)URI字串編碼成符合URI格式的新字串。
可對整個URI做編碼,而不影響到他原本的意義與功能。使用decodeURI() 來進行解碼。
語法:
encodeURI(string)
string:需要被編碼的字串。
返回值:一個已編碼的字串。
encodeURI()不會對下面字符做編碼:
ASCII碼 數字 - _ . ! ~ * ' ( ) ;/?:@&=+$,#
例:
var uristr="test myapp.php?name=維克&type=blog";
document.write(encodeURI(uristr));
輸出==>test%20myapp.php?name=%E7%B6%AD%E5%85%8B&type=blog
encodeURIComponent ():
與encodeURI( )相似,encodeURI()為了整個URI的完整性,因此無法對URI中的功能性字符做編碼。
而encodeURIComponent ()是用來對URI中的局部(參數部分)做編碼,主要是為了避免功能性字符造成參數的混淆,
因此會對URI中的功能性字符編碼。
encodeURIComponent ()使用decodeURIComponent()解碼。
encodeURIComponent ()不會對下面字符做編碼:
ASCII碼 數字, / ? : @ & = + $ #
例:
var uri="http://www.victsao.com/blog/";
document.write(encodeURIComponent(uri));
輸出==>http%3A%2F%2Fwww.victsao.com%2Fblog%2F
注意:由於encodeURIComponent ()會對功能性字元編碼,若對整的URI使用encodeURIComponent (),
會使URI失去原本的完整性。所以你無法使用 " http%3A%2F%2Fwww.victsao.com%2Fblog%2F " 來做HttpRequest。
如果你覺得寫的還不錯,請給我一個讚喔!!
按個讚!~支持本站!~
你可能會有興趣的文章: