關於URL編碼(escape、encodeURI和encodeURIComponent)
原文地址:
https://segmentfault.com/a/1190000037559131
做者:
Fw惡龍
本文首發於:
思否
JavaScript中的幾種方法
1. escape(不推薦使用)
- 不對 ASCII 字母、數字進行編碼
- 不對 *@-_+./ 進行編碼
- 其餘全部的字符都會被轉義序列替換
- 返回一個字符的Unicode編碼值,在u0000到u00ff之間的符號被轉成%xx的形式,其他符號被轉成%uxxxx的形式
- 對應的解碼函數是unescape()
2. encodeURI
- 不對 ASCII 字母、數字進行編碼
- 不對 -_.!~*'();/?:@&=+$,# 這20個ASCII 標點符號進行編碼
- 其餘全部的字符都會被轉義序列替換
- 輸出符號的utf-8形式,而且在每一個字節前加上%
- 對應的解碼函數是decodeURI()
3. encodeURIComponent
- 不對 ASCII 字母、數字進行編碼
- 不對 -_.!~*'() 這9個ASCII 標點符號進行編碼
- 其餘全部的字符都會被轉義序列替換
- 輸出符號的utf-8形式,而且在每一個字節前加上%
- 對應的解碼函數是decodeURIComponent()
應用場景
- 當只須要對連接進行簡單編碼(即:連接的參數中不包含-_.!~*'();/?:@&=+$,#)只須要使用encodeURI
- 當連接中所帶參數含有特殊符號時(如:?name=P&G、?src=https://segmentfault.com)這時咱們但願等號右邊的參數被徹底編碼,需對參數單獨使用encodeURIComponent,而後再拼接成完整的連接
- 設置cookie時先對key和value進行encodeURIComponent編碼
- 當須要取連接中的參數時,使用decodeURIComponent進行解碼
相關連接
歡迎關注本站公眾號,獲取更多信息