關於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()

應用場景

  1. 當只須要對連接進行簡單編碼(即:連接的參數中不包含-_.!~*'();/?:@&=+$,#)只須要使用encodeURI
  2. 當連接中所帶參數含有特殊符號時(如:?name=P&G、?src=https://segmentfault.com)這時咱們但願等號右邊的參數被徹底編碼,需對參數單獨使用encodeURIComponent,而後再拼接成完整的連接
  3. 設置cookie時先對key和value進行encodeURIComponent編碼
  4. 當須要取連接中的參數時,使用decodeURIComponent進行解碼

相關連接

相關文章
相關標籤/搜索