escape、encodeURI、encodeURIComponent [E] [X] | [
2019/3/21 上午 11:22:53 ] |
|
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/"; 輸出==>http%3A%2F%2Fwww.victsao.com%2Fblog%2F 注意:由於encodeURIComponent ()會對功能性字元編碼,若對整的URI使用encodeURIComponent (), 會使URI失去原本的完整性。所以你無法使用 " http%3A%2F%2Fwww.victsao.com%2Fblog%2F " 來做HttpRequest。 |